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

输入以0开头的6位数字触发IndexError,求幸运数字判断代码修复

修复以0开头的6位数字输入的IndexError问题

错误信息:IndexError: string index out of range even though the point exists in the given string
程序需求:接收6位数字输入,若前三位数字之和与后三位数字之和相等,判定为幸运数字。
现有代码对非0开头的6位数字正常运行,但处理以0开头的6位数字时触发上述错误。

原代码:

a = int(input())
n = str(a)
m = (n[0]), (n[1]), (n[2])
s = (n[3]), (n[4]), (n[5])
if  str(sum(int(x) for x in m)) == str(sum(int(x) for x in s)):
    print('Lucky')
else:
    print('Regular')

错误原因

当输入以0开头的6位数字(如012345),执行int(input())会自动去掉前导0,得到12345,转成字符串后长度仅为5,此时访问n[5]会超出字符串索引范围,触发IndexError。

修复方案

直接读取输入的原始字符串,不转换为整数,保留前导0;可选增加输入合法性校验,确保输入是6位数字。

修改后的代码:

n = input().strip()
# 可选:校验输入是否为6位数字
if len(n) != 6 or not n.isdigit():
    print('请输入6位数字')
else:
    sum_first = int(n[0]) + int(n[1]) + int(n[2])
    sum_last = int(n[3]) + int(n[4]) + int(n[5])
    print('Lucky' if sum_first == sum_last else 'Regular')

代码说明

  • 用input().strip()获取原始输入字符串,完整保留前导0,保证字符串长度符合要求。
  • 新增的校验逻辑可避免用户输入非6位或非数字的情况,提升程序健壮性。
  • 直接计算前后三位数字的和,写法更简洁,避免不必要的类型转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:25:21