使用取模运算符的if语句

5
我尝试过这个 -
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"满足条件?


5
打开Python控制台,输入4 % 2,结果是什么?然后输入3 % 2,结果是什么?现在这些结果中哪个被认为是“真的”?取模运算符返回除法后的余数。如果除法是偶数(如在4 % 2中),则没有余数,结果是0 - Some programmer dude
3个回答

4

2除以2的模是

>>> 2 % 2
0

因此, 2 % 2 的结果是 0, 是一个假值,因此 if 语句不匹配。

另一方面,3除以2的余数是1:

>>> 3 % 2
1
1是一个非零整数,因此被认为是真的。
换句话说,if i%2:测试匹配奇数,而不是偶数。在你的列表中有3个奇数。
记住,模运算给出的是除法的余数。2和4可以被2整除,因此没有余数。if测试检查是否有余数。

1
如果布尔表达式评估为true(可以是任何非零值),则if块将被执行。
您可以通过将代码更新如下来实现获取所有偶数计数:
x=[2,3,4,7,9]
count=0
for i in x:
  if i%2 == 0 :
    count=count+1
print count

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接