这个 if 语句如何判断 num%2 是真还是假

How does this if statement determine whether num%2 is true or false

好的,这是一段代码。代码的作用是取一个值,判断是奇数还是偶数。

def isEvenOrOdd(num):
    return 'odd' if num % 2 else 'even'

现在我的问题在于为什么会这样。我目前看待这个的方式是--

num%2 returns 个值。如果 num 为 3,则 num%2 = 1。 为什么'1'的值会满足'if'条件?

我以为这是 1 和 0 的问题,但我用 %4 尝试了相同的代码,如果返回 3,它仍然满足 if 语句。

我知道这对某些人来说可能是一个基本问题,所以我很抱歉理解这个问题可能很慢。谢谢!


感谢您的帮助!我现在真的明白了

原因与Python中对象的“真实性”有关。 Python 中的每个对象,即使它不是布尔值,也被认为是“真实的”或“虚假的”。在这种情况下,一个整数当且仅当它不为零时才被认为是“真实的”。

因此,如果数字是奇数,则其模数将为1,即为真。否则,模数将为 0,这被认为是错误的。

如果将模数切换为 4,则当余数不为零时(即,如果数字不是 4 的倍数),结果将为真。

在python中,有些数据类型有真值或假值,它不一定是布尔值。 例如

test = None
if test:
  print("working")
else:
  print("Not working")

你会注意到你得到了 Not working 的输出,原因是对象 None 被视为 False 同样适​​用于其他一些数据类型,对于整数,只要一个值是 zero (0) 它会把它当作 False

所以在你的情况下,如果 num % 2 return 0 那么你将

'odd' if 0 else 'even' # will will return 'even'