如果声明与模运算符

时间:2016-11-08 07:54:04

标签: python python-2.7 if-statement modulo

我试过了 -

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”?

3 个答案:

答案 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