Python 不带等号和不等号的模运算符
Python Modulo Operator without An Equal Sign and A Not-Equal Sign
def even_or_odd(number):
return 'Odd' if number % 2 else 'Even'
print(even_or_odd(2))
为什么这个 Python 代码打印偶数而不是奇数?
表达式 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) 虽然我很不喜欢这种类型的人为限制,但教育工作者经常会在作业中出现。毕竟,什么时候真正要求开发人员在没有 =
键的情况下实现某些东西?也许如果他们的键盘坏了?但是,你更大的问题肯定是为一家不会 shell 花 5 美元买一个新键盘的公司工作:-)
def even_or_odd(number):
return 'Odd' if number % 2 else 'Even'
print(even_or_odd(2))
为什么这个 Python 代码打印偶数而不是奇数?
表达式 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) 虽然我很不喜欢这种类型的人为限制,但教育工作者经常会在作业中出现。毕竟,什么时候真正要求开发人员在没有 =
键的情况下实现某些东西?也许如果他们的键盘坏了?但是,你更大的问题肯定是为一家不会 shell 花 5 美元买一个新键盘的公司工作:-)