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

Python使用超集判断数字包含全部10位数字时的逻辑错误

问题原因

  • 集合A只在进入while循环前被赋值了一次,对应初始值n=1234567880的字符集合。后续循环中你每次给n加1,但没有重新计算n对应的集合更新A,导致每次超集判断用的都是初始的、缺少数字9的集合,判断结果永远为False。
  • 因为判断永远不满足A.issuperset(C) == True的条件,complete变量永远不会被赋值为False,while循环会一直执行else分支,无限累加打印n,永远不会输出符合要求的结果。

修复方案

你只需要在每次n更新后,同步更新集合A的值即可,修正后代码如下:

n = 1234567880
d = 1234567890
C = set(str(d))
complete = True
while complete == True:
    A = set(str(n)) # 每次循环都重新计算当前n对应的集合
    if A.issuperset(C) == True:
        print(n)
        complete = False
    else:
        n = n + 1
        print(n)
else:
    print("completed")

修改后程序运行到n=1234567890时就会触发判断条件,和你预期的执行10次左右就能输出结果的逻辑一致。

内容的提问来源于stack exchange,提问作者Ben Again

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:15:04