我刚开始学习计算机科学,我对python 3和编码很新。我们的第一个任务是使用Zellers Congruence计算星期几,我对我编写的代码有几个问题。
year = int(input("Year: "))
while not int(year) in range(1583, 10000):
year = input("Out of allowed range 1583 - 9999. Please enter a valid
number: ")
month = int(input("Month: "))
while not int(month) in range(1, 13):
month = input("Out of allowed range 1 - 12. Please enter a valid number: ")
if month == 1 or month == 2:
month += 12
year -= 1
day = int(input("Day: "))
while not int(day) in range(1, 32):
day = input("Out of allowed range 1 - 31. Please enter a valid
number: ")
result = ( day + 13 * (month+1) // 5 + year + year // 4
- year// 100 + year // 400 ) % 7
weekday = {0: "Saturday",1: "Sunday", 2: "Monday",3: "Tuesday",4:
"Wednesday",5: "Thursday",6: "Friday"}
print("The day is " + weekday[int(result)] + ".")
首先,我应该确保日期范围与正确的月份相关。例如,当月份输入为1,3,5,7,8,10或12时,日间隔应为1 - 31.如果月份输入为4,6,9或11,则日间隔应为1 - 1 30。最后我还要考虑闰年。我无法弄清楚如何编写这些要求。
此外,欢迎所有批评。我知道这远远不够,所以请让我知道我能做得更好!
答案 0 :(得分:0)
泽勒的同意正确处理闰年。如果你的问题是确保输入日期是有效的,我相信最简单的方法是使用用户输入创建一个python datetime.date
对象。
import datetime
... # get user inputs
date = datetime.date(year, month, day)
如果有任何无效输入,python将引发一个有意义的异常。您不需要自己进行任何验证,只需将它们作为整数读取即可。