Python奇偶性判断函数异常:输入13本应返回False却返回True
函数奇偶性判断问题排查
问题核心
输入13时,原数是奇数,各位数字和为4(偶数),二者奇偶性不同,函数本应返回False,但实际返回True,说明函数逻辑存在错误。
常见错误点及修正方案
1. 错误的判断条件
如果你的代码是类似这样的:
def par_analy(num): digit_sum = sum(int(d) for d in str(num)) # 错误:判断原数和各位和是否相等,而非奇偶性一致 return num == digit_sum
或者:
def par_analy(num): digit_sum = sum(int(d) for d in str(num)) # 错误:逻辑或会导致只要其中一个是奇数就返回True return (num % 2 == 1) or (digit_sum % 2 == 1)
这类错误的核心是没有正确判断奇偶性是否一致。
2. 正确的逻辑实现
正确的判断应该是:原数的奇偶性(num % 2)和各位和的奇偶性(digit_sum % 2)是否相等。同奇或同偶时返回True,否则返回False。
修正后的函数:
def par_analy(num): # 计算各位数字之和 digit_sum = sum(int(digit) for digit in str(num)) # 判断奇偶性是否一致 return (num % 2) == (digit_sum % 2)
测试验证
- 调用
par_analy(13):13 % 2 = 1,digit_sum = 4 % 2 = 0,1 != 0,返回False,符合预期。 - 调用
par_analy(243):243 % 2 = 1,digit_sum = 9 % 2 = 1,1 == 1,返回True,符合示例要求。
内容的提问来源于stack exchange,提问作者Kareem Mostafa
相关产品推荐
相关产品推荐

