代码如下,具体方法在注释里面
-
'''
-
需求:已知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博客 ” ,链接:https://blog.itpub.net/29023300/viewspace-2130738/
,如需转载,请注明出处,否则将追究法律责任。