代码如下,具体方法在注释里面
运行代码,
- '''
- 需求:已知1900.1.1是星期一,对于一个给定的年份和月份,输出这个月的最后一天是星期几
- '''
-
- import calendar as cal
- import datetime as dt
-
-
- #方法1,定义第1个函数
- #使用原始的方法,来计算出总的天数,不使用日期和日历模块计算天数
- #以1900年1月1日为起点,
- # 首先:计算输入的年份和1900之间的闰年和平年的数量,从而计算是中间的年的总天数
- # 其次:计算输入的月份从当年第1天到本月最后一天的总天数
- # 以上二者之和即是1900年1月1日到输入的年月的最后一天的总天数
- # # 根据总天数的差值除以7的余数来判断星期几
-
- def getWeekday1( ):
-
- year = int(raw_input('输入年份 : >= 1900 年 '))
- month = int(raw_input('输入月份 : 1-12 '))
-
- #定义闰年数量的变量
- r_num = 0
- #定义平年的数量的变量
- p_num = 0
-
- #计算闰年和平年的总天数
- #思路:1900到当前年之间只有平年和闰年两种
- #我们先判断闰年,如果是的话 +1,否则就是平年+1
-
- for i in range(1900, year):
- if i % 4 == 0 and (i % 100 != 0 or i % 400 == 0):
- r_num = r_num + 1
- else:
- p_num = p_num + 1
-
- #计算闰年和平年的总天数
- year_days = r_num * 366 + p_num * 365
- #print '年的天数: ', year_days
-
- #计算输入的本年月份的总天数
- #定义一个平年的每个月天数的元组,计算月份的天数的和
- dic2 = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
- i = 1
- while i <= len(dic2):
- i = i + 1
- month_days = sum(dic2[0 : month])
-
- #计算总天数=所有年的总天数+本年月份的总天数
- #上面计算本年月份的总天数时,还没考虑闰年,
- #下面判断下当年年份是否闰年以及输入的月份是否大于等于2
- #是的话 总天数+1
- if year % 4 == 0 \
- and (year % 100 != 0 or year % 400 == 0) \
- and month >= 2:
- total_days = month_days + year_days + 1
- else:
- total_days = month_days + year_days
-
- #最后根据总天数来除以7的余数 以1900年1月1号星期一为基准,来判断星期几
-
- week_dic1 = {
- 1: '星期一',
- 2: '星期二',
- 3: '星期三',
- 4: '星期四',
- 5: '星期五',
- 6: '星期六',
- 0: '星期天'
- }
-
- format1 = "%d-%d"
- dcha = total_days % 7
- #print format1 % (year, month,), '月最后一天星期是', dcha, '对应', week_dic1.get(dcha)
- print year, '年', month, "月 的最后1天 星期是:", dcha, week_dic1.get(dcha),'\n'
-
-
- print '使用方法1 计算'
- getWeekday1( )
-
-
运行代码,
-
- 使用方法1 计算
- 输入年份 : >= 1900 年 2016
- 输入月份 : 1-12 12
- 2016 年 12 月 的最后1天 星期是: 6 星期六
-
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29023300/viewspace-2130738/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29023300/viewspace-2130738/