为什么我不断收到“预期缩进的块”错误?

时间:2019-06-05 20:53:11

标签: python indentation

我有一堆if ... elif语句在for循环中迭代。我在小数点中间出现“预期的缩进块”错误。我不知道为什么。

我正在Windows上的python 3.7.2 IDLE中运行我的代码。我浏览了其他线程,但没有一个线程帮助我发现问题。

        var qm = queue.GetMessages(20);
        if (!qm.Any(x => x.AsString.Contains(key_property)))
        {
            queue.AddMessage(message);
        }

该错误发生在第12行。该消息突出显示了elif和x == 1之间的空格:

问题的结论: 我想出了一种完全不同的方式来做同样的事情,这样就不会给我错误:

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)

我知道这看起来有很大的不同,没有上下文它可能没有任何意义,但是它可以做同样的事情。实际上,它比旧版本短很多。感谢您的全力帮助:)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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循环外定义
这不会出现任何错误。
希望对您有帮助