首页 > 解决方案 > 编写一个程序,将日期作为输入并输出日期的季节

问题描述

例如:如果输入是:
4 月
11 日
,输出是:Spring

此外,检查 string 和 int 是否有效(实际的月份和日期)。例如:如果输入为:
蓝色
65
,则输出为:无效

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

我链接了我的代码,但它不适用于这两个输入(我不知道为什么)
1.对于 11 月 7 日,我的输出是“夏天”,而应该是“秋天”
2.对于 9 月 31 日,我的当它应该是“无效”时,输出是“夏天”

input_month = input()
input_day = int(input())
months= ('January', 'February','March', 'April' , 'May' , 'June' , 'July' , 'August' , 'September' , "October" , "November" , "December")

if not(input_month in months):
    print("Invalid")

elif input_month == 'March':
    if not(1<=input_day<=31):
        print ("Invalid")
    elif input_day<=19:
        print("Winter")
    else:
        print ("Spring")
elif input_month == 'April' :
    if not(1<=input_day<=30):
        print("Invalid")
    else:
        print("Spring")
elif input_month == 'May':
    if not(1<=input_day<=31):
        print("Invalid")
    else:
        print("Spring")
elif input_month == 'June':
    if not(1<=input_day<=30):
        print("Invalid")
    elif input_day<=20:
        print ("Spring")
    else:
        print("Summer")
elif input_month == 'July' or 'August':
    if not(1<=input_day<=31):
        print("Invalid")
    else: 
        print("Summer")
elif input_month == 'September':
    if not(1<=input_day<=30):
        print("Invalid")
    elif input_day<=21:
        print ("Summer")
    else:
        print ("Autumn")
elif input_month == "October":
    if not(1<=input_day<=31):
        print("Invalid")
    else:
        print("Autumn")
elif input_month == "November":
    if not(1<=input_day<=30):
        print("Invalid")
    else:
        print ("Autumn")
elif input_month == "December":
    if not(1<=input_day<=31):
        print("Invalid")
    elif input_day <=20:
        print ("Autumn")
    else:
        print ("Winter")
elif input_month == 'January':
    if not(1<=input_day<=31):
        print("Invalid")
    else:
        print("Winter")
elif input_month == "February":
    if not(1<=input_day<=29):
        print("Invalid")
    else:
        print ("Winter")

标签: python

解决方案


你有一个错误的代码行:

elif input_month == 'July' or 'August':

它应该是:

elif input_month == 'July' or input_month == 'August':

或者

elif input_month in ('July', 'August')

正如下面提到的@Steven Rumbalski。

代码input_month == 'July' or 'August'总是计算为True.

因为它被解析为(input_month == 'July') or ('August').

考虑空字符串False,并考虑所有其他字符串True,因此'August'总是计算为True


推荐阅读