小能豆

在 python 中处理列表时出现错误名称“index out of range”

python

我是一个初学者,我正在玩列表,我看到了这个错误并陷入困境有人可以帮助我吗?请告诉我原因并告诉我解决方案。

row1=["😔", "😔", "😔"]
row2=["😔", "😔", "😔"]
row3=["😔", "😔", "😔"]
map=[row1+row2+row3]
print(f"{row1}\n{row2}\n{row3}\n")
postion=input("where to you want to put the tresures")
row=int(postion[0])
column=int(postion[1])
map[row-1][column-1]="x"
print(f"{row1}\n{row2}\n{row3}\n")

输出

 ['😔', '😔', '😔']
 ['😔', '😔', '😔']
 ['😔', '😔', '😔']

where to you want to put the tresures23
Traceback (most recent call last):
File "main.py", line 9, in <module>
map[row-1][column-1]="x"
IndexError: list index out of range

阅读 137

收藏
2023-07-28

共1个答案

小能豆

您遇到的问题是由于输入的位置超出了列表的索引范围导致的。在您的代码中,输入的位置是一个两位数,第一个数字表示行,第二个数字表示列。然而,列表的索引是从0开始的,而不是从1开始的,因此您需要将输入的位置减去1以匹配列表的索引。

此外,您在创建地图列表时,将所有的行连接在一起,而没有正确地创建一个包含三个独立行的地图。因此,在您的代码中,所有行实际上是同一个列表对象的引用,因此修改一个行会同时修改其他所有行。

为了解决这些问题,您可以按照以下方式修改代码:

row1 = ["😔", "😔", "😔"]
row2 = ["😔", "😔", "😔"]
row3 = ["😔", "😔", "😔"]
map = [row1, row2, row3]  # Create a list of lists

print(f"{row1}\n{row2}\n{row3}\n")

position = input("Where do you want to put the treasure? ")
row = int(position[0]) - 1  # Subtract 1 to match the list index
column = int(position[1]) - 1  # Subtract 1 to match the list index

# Check if the entered position is within the valid range
if 0 <= row < 3 and 0 <= column < 3:
    map[row][column] = "x"
    print(f"{row1}\n{row2}\n{row3}\n")
else:
    print("Invalid position. Please enter a position between 11 to 33.")

在这个修改后的代码中,我们创建了一个包含三个独立行的地图列表,并在输入位置后使用条件语句来检查位置是否在有效范围内。这样,您就可以将 “x” 放置在指定的位置上,并避免了索引超出范围的错误。

2023-07-28