编写一个以日期作为输入并输出日期的季节或无效的程序

Writing a program that takes a date as input and outputs the date's season or invalid

例如:如果输入是: 四月 11 输出是:Spring

此外,检查字符串和整数是否有效(实际的月份和日期)。例如:如果输入是: 蓝色的 65 输出是:无效

每个季节的日期是: Spring:3 月 20 日 - 6 月 20 日 夏季:6 月 21 日 - 9 月 21 日 秋季:9月22日-12月20日 冬季:12 月 21 日 - 3 月 19 日

这是我的问题,除了在 30 日结束的月份(4 月、6 月、9 月和 11 月)外,一切正常。现在,如果我输入 June 31,输出应该是 'Invaild' 但它没有显示任何输出。我把我的代码放在下面,任何帮助将不胜感激。

    month = input('Enter month: ')
    day = int(input('Enter day: '))

    months  = [
'January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'
]
    
    if month not in months or (day <= 0) or (day > 31):
        print('Invalid')

Spring

    elif (month == 'March' and day >= 20 or month == 'April' and day <= 30 or \
          month == 'May' and day or month == 'June' and day <= 20):
        if (day <= 0) or (day > 31):
            print('Invalid')
        else:
            print('Spring')

夏天

    elif (month == 'June' and day >= 21 and day <= 30 or month == 'July'and day or \
          month == 'August' and day or month == 'September' and day <= 21):
        if (day <= 0) or (day > 31):
           print('Invalid')
        else:
           print('Summer')

秋天

    elif (month == 'September' and day >= 22 and day <= 30 or \
          month == 'October' and day or month == 'November' and day <= 30 or \
          month == 'December' and day <= 20):
        if (day <= 0) or (day > 31):
           print('Invalid')
        else:
           print('Autumn')

冬天

    elif (month == 'December' and day >= 21 and day <= 31 or \
          month == 'January' and day or month == 'February' and day or \
          month == 'March' and day <= 19 and day >= 31):
        if (day <= 0) and (day > 31):
           print('Invalid')
        else:
           print('Winter')

在所有 elif 语句之后,添加最后一个 else 语句来捕获错误并将其作为 print("Invalid") 另外,请将 elif 语句中的各种 orand 放在方括号内,这样就不会有 confusion/error 哪个先被选中。 请检查 pharse month == 'May' and day or month...认为您错过了 day < 30。这是所有 4 elif 语句

编辑

已按要求更新代码...

month = input('Enter month: ')
day = int(input('Enter day: '))

months  = ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December']
    
if month not in months or (day <= 0) or (day > 31):
    print('Invalid')

elif ((month == 'March' and day >= 20) or (month == 'April' and day <= 30) or \
      (month == 'May') or (month == 'June' and day <= 20)):
    if (day <= 0) or (day > 31):
        print('Invalid')
    else:
        print('Spring')
elif ((month == 'June' and day >= 21 and day <= 30) or (month == 'July') or \
      (month == 'August') or (month == 'September' and day <= 21)):
    if (day <= 0) or (day > 31):
       print('Invalid')
    else:
       print('Summer')
    
elif ((month == 'September' and day >= 22 and day <= 30) or \
      (month == 'October') or (month == 'November' and day <= 30) or \
      (month == 'December' and day <= 20)):
    if (day <= 0) or (day > 31):
       print('Invalid')
    else:
       print('Autumn')
elif ((month == 'December' and day >= 21) or \
      (month == 'January') or (month == 'February' and day<=28) or \
      (month == 'March' and day <= 19)):
    if (day <= 0) and (day > 31):
       print('Invalid')
    else:
       print('Winter')
else:
    print("Invalid")