+13 投票
分类:Python编程与实践 | 用户: (2.6k 分)
#y年m月有几天
y=int(input('y:'))
m=int(input('m:'))
if m in list('1''3''5''7''8''10''12'):
    print(31)
elif m==2:
    if y%4==0:
        print(29)
    else:
        print(28)
else:print(30)

1个回答

+2 投票
用户: (45.4k 分)
修改于 用户:

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)

 

欢迎来到 爱可可Q&A ,有什么问题可以尽管在这里提问,你将会收到其他成员的热心回答。
...