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

生成X至Y间无重复数字的列表:Python代码调试求助

问题分析与代码修复

原代码的核心问题在于逻辑完全偏离了“检测数字是否有重复位”的需求,具体问题点:

  • 错误修改了存储原始数字的列表l,导致后续处理的是被整除后的数值(最终变成0)
  • 仅对比当前位和个位,无法覆盖所有数位的重复检测(比如11的两位都是1,这个逻辑无法识别)
  • 结果收集的逻辑混乱,导致最终输出全是0

修复方案1:字符串法(简洁直观)

利用字符串的去重特性,判断数字转成字符串后的长度是否等于其字符集合的长度(集合自动去重,若长度一致则无重复数字):

x, y = map(int, input().split())
result = []
for num in range(x, y + 1):
    s = str(num)
    if len(s) == len(set(s)):
        result.append(str(num))
print(','.join(result))

输入10 20时,输出:10,12,13,14,15,16,17,18,19,20

修复方案2:数学方法(纯数字操作)

通过取余和整除操作逐位提取数字,用集合记录已出现的数位,判断是否有重复:

x, y = map(int, input().split())
result = []
for num in range(x, y + 1):
    temp = num
    digits = set()
    has_duplicate = False
    while temp > 0:
        digit = temp % 10
        if digit in digits:
            has_duplicate = True
            break
        digits.add(digit)
        temp = temp // 10
    if not has_duplicate:
        result.append(str(num))
print(','.join(result))

这个方法同样能得到符合预期的输出,适合需要避免字符串操作的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:35:20