|
|
发表于 2023-7-18 10:16:29
|
显示全部楼层
本楼为最佳答案
问题的原因在于你如何检查月份是否在某个特定的集合中。在 Python 中,语句如 if month == (1 or 3 or 5 or 7 or 8 or 10 or 12) 实际上并不会按照你想要的方式工作。 or 运算符在 Python 中返回第一个非“假”值。因此 (1 or 3 or 5 or 7 or 8 or 10 or 12) 实际上只会返回 1 ,原因是在 Python 中,所有非零整数都被视为真值。所以,该语句只有当 month 为 1 时才会返回真,这就是为什么你的代码在处理 3-12 月份时会失效。
如果你希望检查 month 是否在一组特定的值中,可以使用 in 运算符和一个元组或列表。以下是一个修改过的版本:
- year = input("请输入年份数字:")
- year = int(year)
- month = input("请输入月份数字:")
- month = int(month)
- if month in {1, 3, 5, 7, 8, 10, 12}:
- print("这个月有31天")
- elif month in {4, 6, 9, 11}:
- print("这个月有30天")
- elif month == 2:
- if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
- print("这个月有29天")
- else:
- print("这个月有28天")
复制代码
这里,我们使用 {} 创建了一组月份,并使用 in 运算符检查 month 是否在这些月份中。我们还修复了计算闰年的代码,原代码只考虑了能被4整除的年份为闰年,但实际上还需要考虑不能被100整除,或者能被400整除的年份才是闰年。 |
|