我试过了 -
x=[2,3,4,7,9]
count=0
for i in x:
if i%2:
count=count+1
print count
为什么计数为3
而不是2
,因为i%2
仅限于“2和4”?
答案 0 :(得分:3)
2以上的模数 0 :
>>> 2 % 2
0
因此2 % 2
生成0
,这是一个假值,因此if
语句不会匹配。
另一方面,3的模数为1:
>>> 3 % 2
1
1
是一个非零整数,因此被认为是真的。
换句话说,if i%2:
测试与奇数数字相匹配,甚至不匹配。您的列表中有3个奇数。
请记住,模数为你提供了一个除法的余数。 2和4可以干净地除以2,因此没有余数。 if
测试检查余数。
答案 1 :(得分:0)
如果布尔表达式的计算结果为true
(它可以是任何非零值),那么将执行if块。
您可以通过更新代码来实现所有偶数计数:
x=[2,3,4,7,9]
count=0
for i in x:
if i%2 == 0 :
count=count+1
print count
答案 2 :(得分:0)
为什么你遇到这个问题是因为你已签名告诉你的代码if语句符合条件时会发生什么。 正如@Harsha所指出的,为了满足偶数的条件,它应该是:
x=[2,3,4,7,9]
count=0
for i in x:
if i%2 = 0:
count=count+1
print count
如果你想得到奇数:
x=[2,3,4,7,9]
count=0
for i in x:
if i%2 > 0 :
count=count+1
print count