You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:09:01