![](/img/trans.png)
[英]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.