还是昨天书上那段示例代码,觉得可以发散思维下,写几句能让输入的数字自动计算并显示当前是周几,于是就写了下面这段代码:
写完之后,忽然觉得这样写,有点愚蠢,尤其是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',
- '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
- # 根据给定的年月日以数字形式打印出日期 并且自动输出当前日期是周几
- 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")