Python IndexError: list index out of range (2D list)

Python IndexError: list index out of range (2D list)

我是 python 的新手,目前正在测试二维列表。

这个程序使用一个二维列表来存储一周中每天 3 种面条的销售额。

另外,在每一天中,也会有一列存储每天的总销售额。

但是,我收到一个 IndexError,我似乎无法弄清楚哪里出了问题。

Sales = [[]]

def enterSales(arr):

    i = 0
    j = 0
    total_per_day = 0

    while i < 7:

        day = {
            0: "Monday",
            1: "Tuesday",
            2: "Wednesday",
            3: "Thursday",
            4: "Friday",
            5: "Saturday",
            6: "Sunday"
        }

        print("Enter " + day[i] + " sales for...")

        for j in range(3):

            noodle = {
                0: "Dried",
                1: "Dark",
                2: "Spicy",
            }

            arr[i].append(int(input(noodle[j] + " noodle: ")))

            # calculate total sales per day
            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):

        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, ".")

在您的 for 循环中,您必须为每个 i 循环添加空列表。

在递增之前添加下面一行 i

arr[i].append(total_per_day) # after this line in your code
arr.append([])  #add this line

看起来问题出在您的销售列表中。 在每次迭代中,您都试图将一个新元素附加到 Sales:

中的第 i 个列表

arr[i].append(int(input(noodle[j] + " noodle: ")))

因为你在开头有 Sales=[[],]。第一次迭代 (i = 0) 工作得很好。第二个尝试访问 Sales[1] 时出现问题 -> 超出范围,因为 Sales 只有 1 个元素。

因为您有 7 次迭代 (while i < 7)。您可以按如下方式初始化您的销售额:

Sales = [[] for x in range(7)]

这将导致 Sales=[[], [], [], [], [], [], []]

我还建议您将 7 放入某个常量中,这样它的含义就更清楚,您可以重新使用它。