簡體   English   中英

我正在嘗試用Python制作四連冠游戲。 這是我印刷電路板的代碼。 運行結果導致列表索引超出范圍錯誤

[英]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]]

我們首先打印變量的值; itemNumberitemNumberelementNumber均為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM