[英]So I'm trying to make a nested list in python3 in the dumbest way possible an my code gives me an “Out of Range” index error on line 19
[英]I'm trying to make a connect four game in Python. This is my code for printing the board. Running results in a list index out of range error
到目前为止,这是我的代码:
grid = [["0","1","2","3","4","5","6"],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.']]
itemNumber = 0
for listItem in range(len(grid)):
line = ""
elementNumber = 0
for element in range(listItem):
elementNumber = elementNumber + 1
elementNumber = int(elementNumber)
listItem = grid[[itemNumber][elementNumber]]
line = line + str(listItem)
print(line)
itemNumber = itemNumber + 1
运行代码会在第20行给出列表索引超出范围的错误。我不明白为什么会这样。
另外,有人可以帮助我找到一种方法来检查对角线是否有赢吗? 如果有人输入不存在的列,我还需要保持代码运行的帮助。
任何帮助将不胜感激,并在此先感谢任何贡献者。
我认为您的问题是您正在尝试访问数组
listItem = grid[[itemNumber][elementNumber]]
代替
listItem = grid[itemNumber][elementNumber]
也许您想在元素号“之后”添加+1,因为您将永远不会获得像这样的第一列,所以您已经访问了该值
遍历网格的正确方法是:
itemNumber = 0
for x in range(len(grid)):
line = ""
elementNumber = 0
for element in range(len(grid[itemNumber])):
listItem = grid[itemNumber][elementNumber]
elementNumber = elementNumber + 1
line = line + str(listItem)
print(line)
itemNumber = itemNumber + 1
这是我认为您做错了的地方:
listItem = grid[[itemNumber][elementNumber]]
索引列表列表的正确方法是list[x][y]
,因此在您的情况下应为listItem = grid[itemNumber][elementNumber]
这是您的代码中的另一个问题:
while "OOOO" or "XXXX" in grid == False:
if gridSeven[column] == "X" or "O":
这些是错误的条件格式。 "OOOO"
是一个非空字符串,已经表示True,因此,此while循环条件始终为True。 同样, "O"
表示真。 正确的格式应如下所示:
while "OOOO" not in grid and "XXXX" not in grid:
if gridSeven[column] in ["X","O"]:
让我们分解一下索引网格的尝试,
listItem = grid[[itemNumber][elementNumber]]
我们首先打印变量的值; itemNumber
, itemNumber
和elementNumber
均为1。 那使这个表达
listItem = grid[[1][1]]
为了评估表达式grid[1][1]], we start with the index you gave,
[1] [1]开始; note the extra barckets. Working from the inside out,
; note the extra barckets. Working from the inside out,
; note the extra barckets. Working from the inside out,
[1] (the left-hand one) is a list with a single element, the integer
1 (the left-hand one) is a list with a single element, the integer
. You now try to access an element of this list, element
. You now try to access an element of this list, element
1 . However, since [1] is a list with only one element, its only valid index is
. However, since [1] is a list with only one element, its only valid index is
0`。
这是您的错误出现的地方。 正确的分配是
listItem = grid[itemNumber][elementNumber]
这将评估grid[1][1]
,它是7x7网格的第2行,第2列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.