问题描述
def even_or_odd(number):
return 'Odd' if number % 2 else 'Even'
print(even_or_odd(2))
为什么这个 Python 代码打印 Even 而不是 Odd?
解决方法
表达式 number % 2
,其中 number
是偶数,将得到零。这是 Python 中的错误值,因此 if
将失败并输出 Even
。没有什么不同:
>>> if 0:
... print('zero')
... else:
... print('nonzero')
...
nonzero
如果您希望 if
语句对偶数成功,最好使用 number % 2 == 0
,它会给您 True
数字。该等效语句将写为:
return 'Even' if number % 2 == 0 else 'Odd'
但是,鉴于您对标题的限制(没有 ==
或 !=
),这是不允许的(a)。使用“反向”逻辑可以解决这个问题。
顺便说一句,其他方法可以包括(可能还有更多):
return 'Even' if not number % 2 else 'Odd'
return ['Even','Odd'][number % 2]
(a) 虽然我很不喜欢这种类型的人为限制,但教育工作者经常会偷偷溜进作业中。毕竟,什么时候才能真正要求开发人员在没有 =
键的情况下实现某些功能?也许如果他们的键盘坏了?但是,您更大的问题肯定是为一家不会为新键盘支付 5 美元的公司工作:-)