You need to enable JavaScript to run this app. Python使用2D list实现周度面条销量统计触发IndexError排错求助
优惠活动
大模型
产品
解决方案
定价
更多

Python使用2D list实现周度面条销量统计触发IndexError排错求助

2D列表销售统计程序IndexError根因定位与修复

触发报错的根本原因

你遇到的IndexError: list index out of range,核心是外层2D列表的初始化长度和访问索引范围完全不匹配:

  • 初始定义Sales = [[]]时,外层列表只包含1个空的子列表,有效可访问的索引仅为0。
  • 代码逻辑需要存储7天的独立销售数据,对应需要7个单独的子列表。当while循环执行到i=1(处理周二数据的环节)时,代码运行到arr[i].append(...)步骤,试图访问外层列表索引为1的元素,该元素从未被定义,直接触发索引越界。

代码隐藏的计算逻辑问题

除了直接触发报错的初始化缺陷,代码还有一个会导致计算结果失真的逻辑漏洞:

  • 用于累加当日销售额的变量total_per_day = 0定义在while循环外部,变量初始化仅执行一次,后续每日的销售额累加会带着前一天的总额值,最终存入列表的“当日总额”实际上是从周一到当天的累计销售额,并非单日的独立销售总额。

可直接运行的修复版本

# 提前初始化7个独立的空子列表,匹配7天的存储需求,避免索引越界
Sales = [[] for _ in range(7)]

def enterSales(arr):
    i = 0
    # 将固定映射的字典移到循环外定义,减少冗余重复创建
    day = {
        0: "Monday",
        1: "Tuesday",
        2: "Wednesday",
        3: "Thursday",
        4: "Friday",
        5: "Saturday",
        6: "Sunday"
    }
    noodle_type = {
        0: "Dried",
        1: "Dark",
        2: "Spicy",
    }

    while i < 7:
        # 每日处理前将单日总额清零,避免跨天累加
        total_per_day = 0
        print("Enter " + day[i] + " sales for...")

        for j in range(3):
            arr[i].append(int(input(noodle_type[j] + " noodle: ")))
            # 累加当日对应品类的销售额
            total_per_day += arr[i][j]

        # 将单日总额存入当日的子列表末尾
        arr[i].append(total_per_day)
        i += 1


def totalWeeklySales(arr):
    total_sales_per_week = 0
    for i in range(7):
        # 每个日子列表的第4个元素(索引3)就是当日总额
        total_sales_per_week += arr[i][3]
    return total_sales_per_week


enterSales(Sales)
value = totalWeeklySales(Sales)
print("Total sales of the week is", value, ".")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 03:06:01