本题为输入年月日得出当前星期数
跟上一次练习写的内容没有太大的变化
year = eval(input("Enter year:(e.g., 2008): "))
month = eval(input("Enter month: 1-12: "))
dayMonth = eval(input("Enter the day of the month: 1-31: "))
j = year // 100
k = year % 100
if month == 1 or month == 2:
month += 12
print(f"month is {month}")
k =(year - 1) % 100
print(f"year is {year}")
h = (dayMonth + ((26 * (month + 1)) // 10) + k + (k / 4) + (j / 4) + 5 * j) % 7
if h == 0:
print(f"Day of the week is
Saturday")
elif h == 1:
print(f"Day of the week is
Sunday")
elif h == 2:
print(f"Day of the week is
Monday")
elif h == 3:
print(f"Day of the week is
Tuesday")
elif h == 4:
print(f"Day of the week is
Wednesday")
elif h == 5:
print(f"Day of the week is
Thursday")
elif h == 6:
print(f"Day of the week is Friday")
else:
print("error")
print(f"h is {h}")
print(f"j is {j}")
print(f"k is {k}")
主要出现改变的地方在:
j = year // 100
k = year % 100
if month == 1 or month == 2:
month += 12
print(f"month is {month}")
k =(year - 1) % 100
print(f"year is {year}")
在开始时忽略了要对j变量进行//100的设置。选择了题里提示/100。出现了不对无法计算结果。
再有K = year % 100其实这里没什么。但是当我引入if语句来针对1月和2月的判定时。我觉的自己的写法可以。但是计算2012年5月12日。答案正确,但是在计算会2013年1月25日计算又出错。而且都是每年的1月2月出错。我当时想if语句里我已经跟电脑声明如果遇到1月或2月就自动给月份加12,年份减1年的呀。
后来继续利用自学时看视频学会的打印方法。把各个命令挨个打印。终于在最后我发现我是在if语句里定义完毕所谓的1月2月年份减一年。但系统其实执行的是if外的K = year % 100。(打印结果显示的很明显是13,按我的设想应该是13年减一年。)发现这个错误后,我就重新写了if里有关k变量的要求
k =(year - 1) %
100
这样系统执行到month为1或2是,自动回将k变量的年减一。这样再运行,结果就正确了
2013年1月25日为星期五