什么情况?
year = input('请输入一个年份:')while not year.isdigit():
year = input("抱歉,您的输入有误,请输入一个整数:")
year = int(year)
if year % 400 == 0:
print(year,"是闰年")
else:
if year % 4 and year % 100 != 0:
print(year,"是闰年")
else:
print(year,"不是闰年")
运行起来却是
请输入一个年份:2021
2021 是闰年
?????什么鬼? if year % 4 and year % 100 != 0:
改成 if year % 4 ==0 and year % 100 != 0: 在python中,非0的数的布尔值都是True,因此第10行中的if year%4 and year%100!=0就相当于if year%4!=0 and year%100!=0,而这显然是不对的。可以改成if year%4==0 and year%100!=0 year 可以被 4 整除的话,year % 4 的值为 0,0 会被判定为 False,
反之,year 不可以被 4 整除,year % 4 的值不为 0,会被判定为 True,
所以 year % 4 应该替换为 not (year % 4) 或者 year % 4 == 0
year = input('请输入一个年份:')
while not year.isdigit():
year = input("抱歉,您的输入有误,请输入一个整数:")
year = int(year)
if year % 400 == 0:
print(year,"是闰年")
else:
if not (year % 4) and year % 100 != 0: # 改了这里
print(year,"是闰年")
else:
print(year,"不是闰年") tommyyu 发表于 2023-1-7 22:31
在python中,非0的数的布尔值都是True,因此第10行中的if year%4 and year%100!=0就相当于if year%4!=0 and ...
!=优先级不是比and高吗,那不是应该先算and前后两个 象棋爱好者 发表于 2023-1-7 22:45
!=优先级不是比and高吗,那不是应该先算and前后两个
确实,可是year%4相当于year%4!=0,而这显然是不对的,因为闰年需要年份是四的倍数,也就是year%4==0 tommyyu 发表于 2023-1-7 22:47
确实,可是year%4相当于year%4!=0,而这显然是不对的,因为闰年需要年份是四的倍数,也就是year%4==0
啊,year % 4 相当于 year % 4 != 0 吗,为什么 象棋爱好者 发表于 2023-1-7 22:49
啊,year % 4 相当于 year % 4 != 0 吗,为什么
因为非0的数的布尔值是True,因此,如果year%4是True的话,它就是非0的。非0相当于不等于0,也就是year%4!=0 tommyyu 发表于 2023-1-7 22:53
因为非0的数的布尔值是True,因此,如果year%4是True的话,它就是非0的。非0相当于不等于0,也就是year%4 ...
ou! 懂了,谢谢{:10_297:}
页:
[1]