两段代码的比较 其实很多问题都可以简单化的
2012-05-08 11:49
253 查看
还是昨天书上那段示例代码,觉得可以发散思维下,写几句能让输入的数字自动计算并显示当前是周几,于是就写了下面这段代码:
补充: 网友提供的方法,目前还看不懂,留着以后研究
将用户输入的格式化 一下, 然后传入 datetime里面. 调用strftime方法 得到该日期的星期
datetime.datetime(2012,05,8).strftime("%w")
datetime.datetime(2012,05,13).strftime("%w").replace("0","7")
本文出自 “Lucissfer的学习笔记” 博客,请务必保留此出处http://lucissfer.blog.51cto.com/1340825/856861
# 根据给定的年月日以数字形式打印出日期 并且自动输出当前日期是周几 months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', ] # 以1~31的数字作为结尾的列表 endings = ['st','nd','rd'] + 17 * ['th']\ + ['st','nd','rd'] + 7 * ['th']\ + ['st'] # 定义‘周几’这个变量,通过日期可以自动显示当前日期是周几 ending = [ 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', ] year = raw_input('Year: ') month = raw_input('Month(1-12): ') day = raw_input('Day(1-31): ') month_number = int(month) day_number = int(day) # 记得要将月份和天数减1,以获得正确的索引 month_name = months[month_number-1] ordinal = day + endings[day_number-1] week_name = ending[day_number-1] print month_name + ' ' + ordinal + ', ' + year + ' ' + week_name 写完之后,忽然觉得这样写,有点愚蠢,尤其是ending变量的定义,31个值全 部是手动输入并排序的,这样一来太浪费时间了,然后想着,能不能将这个变量的 定义简化一下,然后在群里问了下,很多哥们给了答案,不过多是调用函数,对于 我这个刚开始学习python的菜鸟来说,显然是看不懂的。然而,一个哥们的一句话 让我忽然有了灵感,其实我可以只给ending变量赋值第一周的周一到周日的值,剩 下的做取余运算就行了,然后就写了下面这些,这两段测试结果完全一样:
# 根据给定的年月日以数字形式打印出日期 并且自动输出当前日期是周几 months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', ] # 以1~31的数字作为结尾的列表 endings = ['st','nd','rd'] + 17 * ['th']\ + ['st','nd','rd'] + 7 * ['th']\ + ['st'] # 定义‘周几’这个变量,通过日期可以自动显示当前日期是周几 ending = [ 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', ] year = raw_input('Year: ') month = raw_input('Month(1-12): ') day = raw_input('Day(1-31): ') month_number = int(month) day_number = int(day) # 记得要将月份和天数减1,以获得正确的索引 month_name = months[month_number-1] ordinal = day + endings[day_number-1] week_name = ending[(day_number-1)%7] print month_name + ' ' + ordinal + ', ' + year + ' ' + week_name
这一下少了20几行,看来只要思考就会有收获。
补充: 网友提供的方法,目前还看不懂,留着以后研究
datetime.datetime(2012,05,8).strftime("%w")
将用户输入的格式化 一下, 然后传入 datetime里面. 调用strftime方法 得到该日期的星期
datetime.datetime(2012,05,8).strftime("%w")
datetime.datetime(2012,05,13).strftime("%w").replace("0","7")
本文出自 “Lucissfer的学习笔记” 博客,请务必保留此出处http://lucissfer.blog.51cto.com/1340825/856861
相关文章推荐
- 在很多论坛上看到了有人抱怨Flash CS5中,代码提示(Code hint)有时不显示的问题,这个问题可能有很多原因,我整理了几个解决办法,有可能可以帮助到你~
- 博客记录的比较全,没事可以拜读一下。应该很多都是博主开发时遇到的问题
- 其实很多问题都可以归根到底为能力不足——至第一次接手项目的我
- 其实很多问题都可以归根到底为能力不足——至第一次接手项目的我
- 为以后的我先留个比较小白的问题,这两段代码到底哪个好,如何评价。
- DataGridViewComboBoxColumn 可以让用户输入并自动匹配选项的问题 [问了很多人,找了很多站都没得到答案,所以只好放首页,请管理员体谅.谢谢!]
- Spring AOP编程问题:下面代码哪里错了?可以考验对Spring AOP的实现机制是否了解的
- 括号问题 下面的代码用于判断一个串中的括号是否匹配 所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉
- 分页问题,js之间比较不可以是字符串与字符串比较
- 钱真的可以解决很多问题!
- C#缺省参数可以让代码变得更加简洁明了与时俱进心里敞亮了很多了
- DataColumn.Expression 屬性(可以解决很多问题)
- 两个Long类型真的不能直接用>或<比较么?其实可以
- Apex中DMA的代码.代码主要来自LINUX.:)其实这些代码已经都比较成熟了.
- 要在技术和学术上有所成就,现在很多青年人最需要解决的其实不是知识问题,而是心理上的问题,是对“成功”定义的理解。
- 两部分代码比较,所带来的问题,下面已解决
- 用NSIS安装日志install。log解决了一个安装出现隐蔽的问题、不用看代码,可以节省大把时间!开心!
- 以下链接可以下载到4412 和 210的很多底层代码
- 比较编译技术--Java 代码的静态编译和动态编译中的问题
- 用Meta标签代码让360双核浏览器默认极速模式打开网站不是兼容模式(顺带解决很多兼容性问题)