编写函数,根据用户的输入的某一年,计算是否为闰年,用户的违法输入要进行异常处理。python生成
时间: 2024-09-19 21:11:57 浏览: 35
编写一个Python函数,用于判断给定年份是否为闰年的过程可以按照以下步骤完成。首先,需要对用户输入进行异常处理,确保输入的是整数,并且在公元范围内。然后,我们依据公历闰年的规则(能被4整除但不能被100整除,或者能被400整除)来判断:
```python
def is_leap_year():
try:
year = int(input("请输入一个年份: "))
# 检查输入是否合法
if year < 1:
raise ValueError("年份必须大于等于1")
# 判断闰年
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
print(f"{year} 是闰年")
else:
print(f"{year} 不是闰年")
except ValueError as ve:
print("错误:", ve)
except Exception as e:
print("发生未知错误:", str(e))
# 调用函数
is_leap_year()
```
在这个函数中,`try-except`块用于捕获可能出现的各种异常,如`ValueError`(当输入不是整数时)、以及其他未预期的异常。
相关问题
编写程序,使用不同的实现方法,输出2000~3000之间的所有闰年
Python实现:
方法1:使用for循环遍历每一年,判断是否为闰年
```python
for year in range(2000, 3001):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print(year)
```
方法2:使用列表推导式生成所有闰年
```python
leap_years = [year for year in range(2000, 3001) if year % 4 == 0 and year % 100 != 0 or year % 400 == 0]
print(leap_years)
```
方法3:使用filter函数过滤出所有闰年
```python
def is_leap_year(year):
return year % 4 == 0 and year % 100 != 0 or year % 400 == 0
leap_years = filter(is_leap_year, range(2000, 3001))
print(list(leap_years))
```
方法4:使用lambda表达式和filter函数过滤出所有闰年
```python
leap_years = filter(lambda year: year % 4 == 0 and year % 100 != 0 or year % 400 == 0, range(2000, 3001))
print(list(leap_years))
```
方法5:使用递归函数输出所有闰年
```python
def print_leap_years(start_year, end_year):
if start_year > end_year:
return
if start_year % 4 == 0 and start_year % 100 != 0 or start_year % 400 == 0:
print(start_year)
print_leap_years(start_year + 1, end_year)
print_leap_years(2000, 3000)
```
阅读全文