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

列表符号异常,求14个连续数位最大乘积代码第7行报错

搞定你的14位连续数位最大乘积代码问题

嘿,看你遇到了代码语法异常和逻辑问题,我帮你拆解一下问题所在,然后给你修复后的方案:

先说说你提到的第7行异常

你代码里的缩进完全错误!numbers.append(into)和index += 1没有缩进在for循环块里,这直接导致Python解析代码时结构混乱,看似是括号、逗号的语法报错,本质是缩进错误引发的解析异常,不是符号本身写错了。

还有几个致命的逻辑问题

  1. 无意义的递归调用:你在函数里直接调用iteration(number)却没加任何终止条件,这会触发无限递归,很快就会栈溢出报错,完全没必要这么做。
  2. 循环逻辑错误:你当前的循环只计算了一次14位的乘积,根本没遍历所有可能的连续14位数位组合,完全不符合需求。
  3. 结果取反:你返回sorted(numbers)[0],这是拿列表里最小的乘积,但你要的是最大乘积,应该取排序后的最后一个元素sorted(numbers)[-1]。

修复后的完整代码

def max_14_digit_product(number):
    # 把输入数字转成单个整数组成的列表,方便逐个取数位
    digits = [int(d) for d in str(number)]
    max_product = 0
    
    # 遍历所有合法的起始索引,确保能取到14个连续数位
    for start_idx in range(len(digits) - 13):
        current_product = 1
        # 计算当前起始点开始的14个数位乘积
        for i in range(14):
            current_product *= digits[start_idx + i]
        # 更新最大乘积
        if current_product > max_product:
            max_product = current_product
    
    return max_product

额外优化小技巧

如果你的输入数字特别大(比如几百上千位),可以用滑动窗口优化效率:不用每次都重新计算14个数的乘积,而是用上一个窗口的乘积除以第一个数,再乘上新的数(注意要处理0的情况,避免除以0报错),这样能省不少计算量。示例代码如下:

def optimized_max_14_digit_product(number):
    digits = [int(d) for d in str(number)]
    if len(digits) < 14:
        return 0  # 处理数字长度不足14位的情况
    
    # 先计算第一个窗口的乘积
    current_product = 1
    for i in range(14):
        current_product *= digits[i]
    max_product = current_product
    
    # 滑动窗口遍历后续组合
    for start_idx in range(1, len(digits) - 13):
        # 去掉前一个窗口的第一个数,乘上新的数
        if digits[start_idx - 1] != 0:
            current_product = current_product // digits[start_idx - 1] * digits[start_idx + 13]
        else:
            # 如果前一个数是0,重新计算当前窗口的乘积
            current_product = 1
            for i in range(14):
                current_product *= digits[start_idx + i]
        # 更新最大值
        if current_product > max_product:
            max_product = current_product
    
    return max_product

测试示例

拿一个常见的大数字测试:

test_num = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
print(max_14_digit_product(test_num))  # 输出结果:23514624000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:08:36