簡體   English   中英

為什么我一直收到“預期的縮進塊”錯誤?

[英]Why do I keep getting “expected an indented block” error?

我有一堆if ... elif語句在for循環中迭代。 我在elif中間得到一個“預期的縮進塊”錯誤。 我無法弄清楚為什么。

我正在Windows上的python 3.7.2 IDLE中運行我的代碼。 我查看了其他帖子,但沒有一個幫我找到問題。

rows = [[],[],[],[],[],[],[],[],[]] # rows is a list of 9 lists of nine integers each between 0 and 9 (inclusive)
squares = [] # Where square_interpreter() .append()'s the lists of integers

def square_interpreter(): # Determines the 9 values in each 3 by 3 square in a Sudoku puzzle
    for x in range(9):
        output = []
        if x in [0,1,2]:
            for n in range(3):
                if x == 0:
                    for i in range(3):
                        output.append(rows[n][i])
                elif x == 1:
                    for i in range(3,6):
                        output.append(rows[n][i])
                elif x == 2:
                    for i in range(6,9):
                        output.append(rows[n][i])
        elif x in [3,4,5]:
            for n in range(3,6):
                if x == 3:
                    for i in range(3):
                        output.append(rows[n][i])
                elif x == 4:
                    for i in range(3,6):
                        output.append(rows[n][i])
                elif x == 5:
                    for i in range(6,9):
                        output.append(rows[n][i])
        else:
            for n in range(6,9):
                if x == 6:
                    for i in range(3):
                        output.append(rows[n][i])
                elif x == 7:
                    for i in range(3,6):
                        output.append(rows[n][i])
                elif x == 8:
                    for i in range(6,9):
                        output.append(rows[n][i])
        squares.append(output)

錯誤發生在第12行。消息突出顯示elif和x == 1之間的空格:

問題的結論:我已經找到了一種完全不同的方式來做同樣的事情,所以它不會給我錯誤:

def square_interpreter():
    keys_in_square = [[l + n for l in 'ABC' for n in '123'],
                      [l + n for l in 'ABC' for n in '456'],
                      [l + n for l in 'ABC' for n in '789'],
                      [l + n for l in 'DEF' for n in '123'],
                      [l + n for l in 'DEF' for n in '456'],
                      [l + n for l in 'DEF' for n in '789'],
                      [l + n for l in 'GHI' for n in '123'],
                      [l + n for l in 'GHI' for n in '456'],
                      [l + n for l in 'GHI' for n in '789']]
    for index in range(9):
        output = []
        for key in keys_in_square[index]:
            output.append(values[key])
        squares.append(output)

我知道這看起來很不一樣,沒有上下文它可能沒有任何意義,但它做同樣的事情。 它實際上比舊版本短很多。 謝謝你的幫助:)

for x in range(9):
    output = []
    if x in [0,1,2]:
        for n in range(3):
            if x == 0:
                for i in range(3):
                    output.append(rows[n][i])
            elif x == 1:
                for i in range(3,6):
                    output.append(rows[n][i])
            elif x == 2:
                for i in range(6,9):
                    output.append(rows[n][i])

您的問題似乎在第2行.output = []將選項卡縮進太遠。

編輯:顯然不是,但無論哪種方式至少現在修復:D

rows=[[1,2,3,4,5,6,7,8,9],[2,3,2,4,5,3,5,3,2],[2,3,2,4,5,8,9,2,1]]
output = []
for x in range(9):
    if x in [0,1,2]:
        for n in range(3):
            if x == 0:
                for i in range(3):
                    output.append(rows[n][i])
            elif x == 1:
                for i in range(3,6):
                    output.append(rows[n][i])
            elif x == 2:
                for i in range(6,9):
                    output.append(rows[n][i])
print(output)

以上是您之前發布的代碼的更正版本
我正在使用虛擬行數組
輸出數組應該在for循環之外定義
這不會給出任何錯誤。
我希望它有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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