获取用户输入的年月,输出该月有多少天(考虑闰年)。(如果用户输入的不是数字,让用户重新输入数字;如果用户输入的值不在1-12之间,让用户重新输入合适的值。(使用try-except结构处理输入异常)
时间: 2024-11-22 22:36:52 浏览: 8
你可以创建一个Python函数,通过`try-except`结构获取用户的年月输入,并检查其有效性。下面是一个示例代码:
```python
from datetime import datetime, timedelta
def get_month_days():
while True:
try:
year_str = input("请输入年份(例如2023):")
month_str = input("请输入月份(1-12):")
if not year_str.isdigit() or not month_str.isdigit() or int(month_str) < 1 or int(month_str) > 12:
raise ValueError("输入的年份或月份无效,请重新输入。")
year = int(year_str)
month = int(month_str)
# 检查闰年
if month == 2:
days_in_month = 29 if (year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)) else 28
elif month in [4, 6, 9, 11]:
days_in_month = 30
else:
days_in_month = 31
print(f"{year}-{month}月有{days_in_month}天。")
break
except ValueError as e:
print(e)
get_month_days()
```
在这个代码里,我们首先获取用户输入的年份和月份,然后使用`isdigit()`检查是否为数字,如果非数字则抛出`ValueError`。接着我们检查月份是否在1到12之间,如果不是,则再次提示用户输入。对于二月,我们特别检查了闰年的条件(能被4整除且不能被100整除,除非同时能被400整除)。最后,我们计算并打印出该月的天数。
阅读全文