找问题找故障----年月日得出当前星期数里要注意的小问题

本题为输入年月日得出当前星期数

跟上一次练习写的内容没有太大的变化

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日为星期五

原文地址:https://www.cnblogs.com/yogaMan/p/13070843.html