Python是动态类型的语言,变量的数据类型不受限制可以随时改变,这就要求我们,任何时候都要确认,对同一个变量,所有地方是按同一个数据类型对待的,你给出的代码里, if m in list('1''3''5''7''8''10''12') 是将m看作字符串(而且 '1''3''5''7''8''10''12' 不加逗号的话,等同于 '135781012'),而下面的 if m==2 又把 m 看作整数,这是不可以的,解决方案是,或者将 m 当整数处理:
#y年m月有几天
y = int(input('y:'))
m = int(input('m:'))
if m in [1, 3, 5, 7, 8, 10, 12]:
print(31)
elif m == 2:
if y%4 == 0:
print(29)
else:
print(28)
else:
print(30)
或者将 m 统一当作字符串处理:
#y年m月有几天
y = int(input('y:'))
m = input('m:')
if m in ['1', '3', '5', '7', '8', '10', '12']:
print(31)
elif m == '2':
if y%4 == 0:
print(29)
else:
print(28)
else:
print(30)