获取用户输入月份,输出该月有多少天(考虑闰年)。
输入:"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和自己的思路:
您的代码中出现了几个问题:
在第二行中,您使用了 input()
函数获取用户输入,并使用 split()
方法将输入的年份和月份分开。但是您没有将输入的字符串转换成数字类型。因此,在第 9 行判断是否是闰年时,会将年份作为字符串进行计算,而不是数字。因此,需要在第二行使用 map()
函数,将两个字符串转换为数字。
在第 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("请输入正确的月份")