python - 编写一个程序,将日期作为输入并输出日期的季节
问题描述
例如:如果输入是:
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")
解决方案
你有一个错误的代码行:
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
。
推荐阅读
- javascript - 有什么方法可以控制语义 ui 弹出窗口的时间延迟?
- python - Python Scapy RTP 标头操作 - 如何在 scapy 中解码 RTP?
- c++ - Irrlicht:如何将 ISceneNode 转换为 IMeshSceneNode?
- c# - 如何获取每一行中的每个数据 C# & SQL
- module - 模块创建:后处理问题
- javascript - 从 UnityWebGL jslib 返回字符串
- c# - DateTimeKind 不会更改 UTC/Local/Unspecified 之间日期的任何部分
- typescript - 如何将ts文件编译成js到特定目录
- objective-c - 可以将静态变量用作@synchronized 参数吗?
- ios - 如何从 Cloud Firestore 上的对象中检索值?迅速