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

获取用户输入月份,输出该月有多少天(考虑闰年)。
输入:"2000,2"
输出:"29"

我的思路

if __name__ == '__main__':
    year,month = input().split(',')
    # 判断
    if month in [1, 3, 5, 7, 8, 10, 12]:
        days = 31
    elif month in [4, 6, 9, 11]:
        days = 30
    else:
        if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
            days = 29
        else:
            days = 28
    # 输出
    print('%d' % (days))

不知道哪里出问题了,求指点

参考GPT和自己的思路:

您的代码中出现了几个问题:

  1. 在第二行中,您使用了 input() 函数获取用户输入,并使用 split() 方法将输入的年份和月份分开。但是您没有将输入的字符串转换成数字类型。因此,在第 9 行判断是否是闰年时,会将年份作为字符串进行计算,而不是数字。因此,需要在第二行使用 map() 函数,将两个字符串转换为数字。

  2. 在第 4 行和第 6 行中,您使用了月份作为元素的列表。由于用户输入的月份是字符串类型,因此需要将其转换为整数类型进行比较。因此,需要将列表中的元素都改为整数类型。

下面是修改后的代码:

if __name__ == '__main__':
    year, month = map(int, input().split(','))
    # 判断
    if month in [1, 3, 5, 7, 8, 10, 12]:
        days = 31
    elif month in [4, 6, 9, 11]:
        days = 30
    else:
        if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
            days = 29
        else:
            days = 28
    # 输出
    print('%d' % (days))

人工写的,非AI


#输入一个月份,输出月份的天数。
 
month = int(input("请输入一个月份:(1-12)"))
 
if  0 <month <13:
    month_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    if month ==2:
        year = int (input("请输入年份"))
        if year % 400 == 0 or year % 100 != 0 and year % 4 == 0:
            print("2月有29天")
        else:
            print("2月有28天")
    else:
        print("{0}月有{1}天".format(month,month_day[month-1]))
else:
    print("请输入正确的月份")