HOWTO · Python
在 Python 中检查数字是偶数还是奇数
我们可以使用模运算符 % 或按位 AND 运算符 & 来检查 Python 中的数字是偶数还是奇数。
本页内容
在 Python 中,检查整数是否为偶数,可以看 num % 2 是否等于 0;否则就是奇数。偶数可以被 2 整除且余数为零,奇数除以 2 后余数为一。取模运算符是完成这项判断时最清晰的默认选择。按位 AND 与 1 运算也是一种仅适用于整数的选择。
使用取模运算符检查奇偶性
取模运算符 % 会给出除法的余数。对于整数,除以 2 后,偶数的余数为 0,奇数的余数为 1。在 Python 中,这条规则也适用于负整数:例如,-4 % 2 的结果是 0,而 -3 % 2 的结果是 1。
运行以下示例:
本节中的代码以及显示的标签或输出仍为英文。
def check_parity(num):
if num % 2 == 0:
print("even")
else:
print("odd")
check_parity(22)
提供的运行记录显示,check_parity(22) 会打印 even。该函数直接检查能否整除,并打印一个标签;将 22 替换为你要判断的整数即可。这个函数需要整数,而不是 2.5 这样的十进制数。代码中的 even 标签保持英文。
使用按位 AND 运算符检查奇偶性
按位 AND 运算符 & 会比较两个整数中对应的位。在整数的二进制表示中,偶数的最低有效位是 0,奇数的最低有效位是 1。因此,偶数的 num & 1 结果为 0,奇数的结果为 1。这里 Python 执行的是整数按位运算;它不会先创建二进制字符串。
例如,22 的最低有效位是 0,所以 22 & 1 的结果是 0。33 的这一位是 1,所以 33 & 1 的结果是 1。下面的函数会将这个结果用作条件:
本节中的代码以及显示的标签或输出仍为英文。
def check_parity(num):
if num & 1 == 0:
print("even")
else:
print("odd")
check_parity(33)
提供的运行记录显示,check_parity(33) 会打印 odd。表达式 num & 1 会先于相等比较求值,因此这个条件检查的是最低有效位是否为 0。与取模版本一样,传入函数的应是整数。代码中的 odd 标签保持英文。
为了易读性选择取模运算符
这两种表达式都能判断整数的奇偶性:num % 2 == 0 检查余数,num & 1 == 0 检查最低位。取模写法通常更直接地表达了判断意图,尤其适合不处理位运算的读者。一般进行奇偶判断时,优先使用取模;如果周围代码已经在使用按位运算,或需要关注位级行为,也可以选择按位写法。
按位写法是有效的替代方案,但对于常见的 Python 代码,它并非必要的优化。选择一种写法并保持一致,同时明确输入类型:这些判断描述的是整数的奇偶性,并非任意数值在数学上能否被二整除。如果函数接收外部输入,应在调用奇偶判断之前验证或转换输入;具体转换策略取决于应用,不应隐藏在奇偶判断表达式中。