Python判断正整数是否仅含奇数位的代码运行出错,求问题排查
代码问题分析及修正
存在的问题
- 类型不匹配:代码将入参
n转为字符串后拆分出的每一位是字符串类型,用于比对的onlyodd列表存储的是整数类型,类型不一致导致value in onlyodd判断永远为假,函数固定返回False。 - 逻辑错误+循环提前终止:当前代码仅会校验第一个数位就直接返回结果,不会遍历后续所有数位,且返回逻辑不符合需求:需求要求所有数位均为奇数才返回True,只要存在一个偶数就返回False,现有逻辑会在第一位符合要求时直接返回True,忽略后续数位的偶数情况。
修正后的代码
写法1(逻辑对齐原思路)
def only_odd_digits(n): onlyodd = ['1','3','5','7','9'] for value in str(n): if value not in onlyodd: return False return True
写法2(简洁实现)
def only_odd_digits(n): # 逐位转整数判断奇偶,所有位为奇数时返回True return all(int(digit) % 2 == 1 for digit in str(n))
内容的提问来源于stack exchange,提问作者J Lee
相关产品推荐
相关产品推荐

