Python判断数字是否含重复数位的代码无法正确识别重复值如何修复
代码问题汇总
- Python中布尔值为不可变类型,参数传递时仅传值不传引用,
repeatCheck函数内部对repeatedNumber的修改不会同步到函数外;且你调用repeatCheck时没有接收其返回值,导致外层的repeatedNumber永远为初始值False。 - 变量作用域错误:
numberWorks函数内赋值的found是局部变量,外层while循环访问的found全局变量未初始化,会直接触发未定义报错;finalNumber全程未赋值,最终打印时也会报错。 - 函数返回值逻辑错误:
numberWorks未将是否找到符合要求的数字、以及符合要求的数字结果返回给外层逻辑,循环无法正常终止,也无法拿到最终结果。 repeatCheck存在冗余逻辑:找到重复数字后无需继续遍历剩余元素,可以提前返回提升效率。
修复后的完整代码
def repeatCheck(myList): seen = set() for number in myList: if number in seen: return True seen.add(number) return False def numberWorks(number): digits = [int(n) for n in str(number)] has_repeat = repeatCheck(digits) if not has_repeat: print(number, "succeeded repeatedNumber") return True, number else: print(number, "failed repeatedNumber") return False, number start_number = 1000000000 found = False finalNumber = None while not found: found, finalNumber = numberWorks(start_number) start_number += 1 print(finalNumber)
运行上述代码,输入起始值1000000000时,最终会输出预期结果1023456789。
内容的提问来源于stack exchange,提问作者Timewarper
相关产品推荐
相关产品推荐

