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

如何修复输入整数验证时出现的IndexError: list index out of range

问题修复方案

错误根源

  1. 验证状态未重置:score_valid变量在首次玩家输入验证通过后保持为True,后续5轮玩家循环会直接跳过输入逻辑,导致player_scores列表仅添加1个元素,计算总分时访问索引1-5自然触发IndexError。
  2. 输入验证逻辑无效:type(int(score_input)) == int完全多余,且若用户输入非数字内容,int(score_input)会直接抛出ValueError崩溃程序,根本走不到错误提示分支。

修复后的代码

分数输入循环(修正版)

# 初始化分数列表(如果之前未定义)
player_scores = []
# 循环处理6位玩家的分数输入
for x in range(6):
    score_valid = False  # 每轮玩家输入前重置验证状态
    while not score_valid:
        score_input = input("\n" + str(player_names[x]) + ", enter the number of hits you scored: ")
        try:
            # 尝试将输入转为整数,成功则完成验证
            score = int(score_input)
            score_valid = True
            player_scores.append(score)
        except ValueError:
            # 转换失败时提示重新输入
            print("Invalid input, please enter an integer. Try again.")

总分计算优化版

原循环逻辑在列表长度正确时可正常运行,但用sum()函数更简洁高效:

# 直接计算列表所有元素的总和
total = sum(player_scores)

核心优化点

  • 将score_valid的初始化放入for循环内部,确保每位玩家都能进入输入验证流程。
  • 用try-except捕获整数转换异常,这是Python处理用户输入验证的标准方式,避免非数字输入导致程序崩溃。
  • 利用内置sum()函数替代手动循环求和,减少代码冗余和出错概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:10:24