题目
我写的码
y,m = input().split(',')
if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
print('31')
elif m == 4 or m == 6 or m == 9 or m == 11:
print('30')
else:
if eval(y) % 400 == 0 or (eval(y) % 4 == 0 and eval(y) % 100 != 0):
print('29')
else:
print('28')
提交上去之后输出不太对(由于隐藏了输入值,看不到具体哪里错了)
求解以下问题
1.如何优化(if后面赋值太冗长了)
2.解决输出错误问题
参照我这个写法修改下
# 月份天数初始化列表,索引代表月份
# 0 占位用的
month_days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
def is_leap(year):
"""返回 True 闰年, False 非闰年."""
# 能被4整除且(不能被100整除或能被400整除)
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
def days_in_month(year, month):
"""返回当年当月天数"""
if not 1 <= month <= 12:
return '无效月份 Month'
if month == 2 and is_leap(year):
return 29
# 返回month索引值对应的月天数
return month_days[month]
# 示例
print(days_in_month(2022, 2))
28