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