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
任何人都可以解释一下吗?
答案 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) % 2
或round(a) % 2
来检查舍入到最接近整数的数字是偶数还是奇数。