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

Python列表实验出现IndexError,求符合要求的代码解决方案

解决IndexError问题:循环创建50个列表并实现计数功能

嘿,我来帮你搞定这个报错!你遇到的IndexError: list assignment index out of range,大概率是两个常见问题导致的,咱们一步步理清楚:

错误原因分析

  • 子列表未初始化元素:如果你只是创建了50个空列表(比如lists = [[] for _ in range(50)]),直接去执行lists[num][0] +=1时,每个子列表是空的,根本没有索引为0的元素,自然会报错。
  • 输入的数字超出索引范围:50个列表的索引是从0到49(Python列表索引从0开始),如果输入的数字是50或者负数,就会超出列表的合法索引范围,触发越界错误。

正确实现代码

下面是符合要求的完整代码,解决了上述两个问题:

# 初始化50个列表,每个列表包含一个初始值为0的计数器
counters = [[0] for _ in range(50)]

while True:
    try:
        user_input = input("请输入0-49之间的数字(输入q可退出):")
        # 退出逻辑
        if user_input.lower() == 'q':
            print("程序退出")
            break
        
        # 转换输入为整数
        target_index = int(user_input)
        # 检查索引是否合法
        if 0 <= target_index < 50:
            # 对应列表的数值加1
            counters[target_index][0] += 1
            print(f"已更新:第{target_index}个列表的数值为{counters[target_index][0]}")
        else:
            print("提示:请输入0到49之间的有效数字!")
    except ValueError:
        print("提示:请输入数字或q退出!")

代码说明

  1. 初始化列表:用列表推导式创建50个列表,每个子列表初始包含一个0,确保后续可以直接对索引0的元素进行加1操作。
  2. 输入验证:
    • 捕获ValueError,防止用户输入非数字内容。
    • 检查输入的数字是否在0-49范围内,避免索引越界。
  3. 循环接收输入:通过while True持续接收用户输入,直到输入q退出程序。

如果题目要求输入的数字是1-50(对应第1到第50个列表),只需要把target_index = int(user_input)改成target_index = int(user_input) - 1即可,这样输入1就对应索引0,输入50对应索引49,依然符合合法范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:10:53