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

Python报invalid literal for int() with base 10错误,求各位相乘到单一位数代码修复方案

乘法持久度计算问题修复方案

报错原因

你遇到的invalid literal for int() with base 10错误核心原因是:当乘积变为个位数时,str(sum)[1:2]会返回空字符串,int()无法将空字符串转换为整数,因此抛出异常。

除此之外你的现有代码还存在多个逻辑问题:

  • 初始乘积计算只适配两位数输入,输入一位数、三位数及以上位数时计算结果完全错误,比如输入123只会计算1*2,漏了第三位的3
  • while循环条件使用or且全程未修改n的值,n>0会永久成立,会陷入死循环
  • 循环内的乘积计算仍然只取前两位,遇到三位数的乘积时会漏算后续位的数字
  • 最终打印时直接将字符串和整数类型的count做+拼接,会触发类型错误

修正后的实现代码

def persistence(n):
    # 输入已经是个位数,直接返回0轮
    if n < 10:
        return 0
    count = 0
    current_num = n
    while current_num >= 10:
        product = 1
        # 遍历当前数字的所有位做乘积
        for digit in str(current_num):
            product *= int(digit)
        current_num = product
        count += 1
    print(f"how many times: {count}")
    return count

persistence(39)

逻辑说明

调整后的实现不再局限于两位数的计算场景,适配任意正整数输入:

  1. 先判断输入是否为个位数,是则直接返回0轮次
  2. 循环判断当前处理的数字是否为多位数,是则进入新一轮计算
  3. 每一轮遍历当前数字的所有位计算乘积,更新当前数值后计数+1
  4. 直到当前数值变为个位数时停止循环,输出最终轮次

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:48:04