为什么执行会导致输出错误?

时间:2016-06-10 14:06:19

标签: python python-3.x

def eoo(a):
  if a%2 == 0:
    print("Entered value is even")
  else:
    print("Entered value is odd")
b = 5556.4
print(b)
eoo(b)

输出

5556.4
Entered value is odd

任何人都可以解释一下吗?

2 个答案:

答案 0 :(得分:0)

当你除以2时,%2会给你余数。当你将5556.4除以2时,你的余数不是0,它是.4。这就是为什么你要去你的其他条件。

答案 1 :(得分:0)

输出没有错。 5556.4 % 2不为零,因此您进入else案例:

>>> 5556.4 % 2
0.3999999999996362

这是你的假设,任何不均匀的数字必须是奇数,这是错误的。实际上,“偶数”和“奇数”等类别对十进制数字没有多大意义。来自Wikipedia(强调我的)

  

奇偶校验是一个数学术语,用于描述整数包含两个类别之一的属性:偶数或奇数。 [...]偶数的正式定义是 n = 2k 形式的整数,其中 k 是的整数

相反,您可以,例如,将您的方法更改为以下内容:

def eoo(a):
    if a % 2 == 0:
        print("Entered value is even")
    elif a % 2 == 1:
        print("Entered value is odd")
    else:
        print("Entered value is neither even nor odd")

或者,如果您只对数字的整数部分感兴趣,请使用int(a) % 2round(a) % 2来检查舍入到最接近整数的数字是偶数还是奇数。