求解用Python获取用户输入月份,输出该月有多少天(考虑闰年)

题目

img

我写的码

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')

提交上去之后输出不太对(由于隐藏了输入值,看不到具体哪里错了)

img

求解以下问题
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