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

Python水仙花数函数报错TypeError: 'int' object is not subscriptable

报错诱因说明

这个报错和pow()方法没有任何关联,核心触发原因是你直接对整数类型的入参value执行了下标索引操作value[i]:Python 中仅字符串、列表这类序列类型支持通过[]下标取值,整数属于不可下标访问的标量类型,因此触发了'int' object is not subscriptable的类型错误。

除此之外你的代码还存在两处逻辑缺陷:

  • 你在for循环中嵌套了无终止条件的while循环,一旦满足i<leng的条件就会进入死循环,没有任何修改i或者leng的逻辑可以跳出循环
  • 你没有将整数入参转成字符串就尝试取每一位数值,就算解决了下标报错问题,计算逻辑也无法正常运行
修正后的参考代码
def nar(value):
    # 先将整数转为字符串,方便逐位取值
    str_val = str(value)
    leng = len(str_val)
    total = 0
    for i in range(leng):
        # 从字符串中取出每一位字符,转成整数后计算对应次幂
        total += pow(int(str_val[i]), leng)
    return total == value
功能验证

可以用典型值测试功能是否符合预期:

  • 输入153返回True,符合1³+5³+3³=153的水仙花数规则
  • 输入145返回False,计算结果1³+4³+5³=190和原数不相等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:36:01