例题:已知2012年1月25日是星期三,编写一个程序。输入用“年月日”表示的一个2012年1月25日以后的期,输出该日期是星期几(星期天输出0)。
解题思路:
(1)使用累加法,依次计算年月日
(2)先计算年份大于2012几年,月份大于1月几月,天数按照月份加相应天数最后减去22天
(3)注意事项:注意闰年
首先将每个月的天数组成列表,并且将输入的数字组成列表
monthDays=[1,31,28,31,30,31,30,31,31,30,31,30,31] #将每个月的天数组成列表,第一项为列表第0项,所以随便取值
days=0 #最终天数
let=input().split()
year,month,date=int(let[0]),int(let[1]),int(let[2])
接下来进行计算是否为闰年,如果是闰年一年366天,如果不是则365天。
for y in range(2012,year): #进入循环,判断是否为闰年
if y%4==0 and y%100!=0 or y%400==0:
days+=366
else :
days+=365
接着进行计算月份,月份需要注意如果是闰年2月有29天,否则是28天。
if year%4==0 and year%100!=0 or year%400==0: #进行判断是否是闰年
monthDays[2]=29
for i in range(1,month):
days+=monthDays[i]
最终阶段进行计算天数,并且将结果减去22,最终除7计算出答案。
days+=date
days-=22
print(days%7)
整体代码:
monthDays=[1,31,28,31,30,31,30,31,31,30,31,30,31]
days=0
let=input().split()
year,month,date=int(let[0]),int(let[1]),int(let[2])
for y in range(2012,year):
if y%4==0 and y%100!=0 or y%400==0:
days+=366
else :
days+=365
if year%4==0 and year%100!=0 or year%400==0:
monthDays[2]=29
for i in range(1,month):
days+=monthDays[i]
days+=date
days-=22
print(days%7)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)