2017-09-27 107 views
0

我遇到的唯一问题是在运行程序时输入年,月和日之后,星期几不会打印。我错过了什么,或者我至少可以得到一个提示?python新手。泽勒算法的问题

到目前为止,我的程序(如下)。请记住,我是非常新的python和一般编码,所以请原谅笨重的代码。

谢谢!

高清的main():

#Prompt User to enter year within range 1900 and 2100 
year = eval(input("Enter year: ")) 

while(year < 1900 or year > 2100): 
    year = eval(input("Enter year: ")) 
    print(year) 

#Prompt User to enter month as a number 
month = eval(input("Enter month: ")) 

while(month < 1 or month > 12): 
    month = eval(input("Enter month: ")) 
    print(month) 

#Prompt User to enter day as a number 
day = eval(input("Enter day: ")) 

#Restrict the entry of numbered days based on the month and account for leap year in February 
while((month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12) \ 
     and (day > 31 or day < 1)): 
    day = eval(input("Enter day: ")) 

if(month == 2 and year % 4 == 0): 
    while(day < 1 or day > 29): 
     day = eval(input("Enter day: ")) 
    print(day) 
elif(month == 2): 
    while(day < 1 or day > 28): 
     day = eval(input("Enter day: ")) 
     print(day) 

if(month == 4,6,9,11): 
    while(day < 1 or day > 30): 
     day = eval(input("Enter day: ")) 
     print(day) 

#Change in year if month is January or February 
if((month == 1) or (month == 2)): 
    year = year - 1 

#Switch months so that March becomes the first month of the year and January/ February become the 11th and 12th months respectively 
#Convert variables to algorithm variables (so a = month and b = day) 
    if(month < 3): 
    a = month + 10 
    else: 
    a = month - 2 

    b = day 

    c = year % 100 

    d = year // 100 

    #Compute r with algorithm 
    w = (13 * a - 1) // 5 

    x = c // 4 

    y = d // 4 

    z = w + x + y + b + c - 2 * d 

    r = z % 7 

    r = (r + 7) % 7 

    #Set conditions so r[0,6] prints a day of the week [Sunday == 0 , Saturday == 6] 
    if(r == 0): 
     print("The day is Sunday") 
    elif(r == 1): 
     print("The day is Monday") 
    elif(r == 2): 
     print("The day is Tuesday") 
    elif(r == 3): 
     print("The day is Wednesday") 
    elif(r == 4): 
     print("The day is Thursday") 
    elif(r == 5): 
     print("The day is Friday") 
    elif(r == 6): 
     print("The day is Saturday") 

的main()

+0

不要使用EVAL D:D:D:抱歉的大喊;使用'int(input())'而不是因为'eval'是不安全的;) – HyperNeutrino

回答

0

缩进层次

如果一个月不到3你没有在行47更改缩进级别,它将增加10,然后什么都不做。否则,它会继续。

事实上,你没有改变你的缩进级别,如41。如果月份是1或2,它将从一年减去一个,然后继续;否则,它会跳过整个事情。所以你想要这个:

# etc 

if 1 <= month <= 2: 
    year -= 1 

if month < 3: 
    a = month + 10 
else: 
    a = month - 2 

b = day 

# etc