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 放入某个常量中,这样它的含义就更清楚,您可以重新使用它。
我是 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 放入某个常量中,这样它的含义就更清楚,您可以重新使用它。