由于制表符或 space 内部代码,我如何识别 if、elif 循环内的缩进错误中的问题。有没有识别它的编译器?

How can i identify a problem in Indentation error inside a if, elif loop due to tab or space inside code. Is there a compiler which identifies it?

我是 python 的新手,所以我很难理解循环中的缩进,因为我学过的其他程序都没有使用它。如果我们在 if 和 else 语句中使用括号来定义某些块,是不是会更简单?不管怎样,下面是代码的屏幕截图和红色标记的错误。

实际代码行:

if Turb_Wake_State_Model == "GLAUERT":
        if a_ax < 0.333:
            a_ax = C_ax/(4*(1-a_ax))
        else:
            a_ax = C_ax/((4*(1-0.25*a_ax*(5-3*a_ax))
            
    elif Turb_Wake_State_Model == "SPERA":
        a_c = 0.2
        if a_ax < a_c:
            a_ax = C_ax/(4*(1-a_ax))
        else:
            a_ax = (0.25*(C_ax - a_c^2)/(1-2*a_c))
    
    else:
         print ("WRONG TURBULENT WAKE STATE MODEL IS SPECIFIED")

错误发生在elif 循环中。 我尝试了 else 和 ifs 的所有组合,但无济于事。还尝试阅读帮助“if”语句,但实际上并没有描述缩进。这个问题对某些人来说可能看起来很微不足道,但我在这里遇到了最简单的问题。

我认为您正在寻找这样的东西:

if Turb_Wake_State_Model == "GLAUERT":
    if a_ax < 0.333:
        a_ax = C_ax/(4*(1-a_ax))
    else:
        a_ax = C_ax/((4*(1-0.25*a_ax*(5-3*a_ax))
            
elif Turb_Wake_State_Model == "SPERA":
    a_c = 0.2
    if a_ax < a_c:
        a_ax = C_ax/(4*(1-a_ax))
    else:
        a_ax = (0.25*(C_ax - a_c^2)/(1-2*a_c))
    
else:
    print ("WRONG TURBULENT WAKE STATE MODEL IS SPECIFIED")

在 python 中,您的 elifelse 语句必须与您希望它们对应的 if 语句处于相同的缩进级别。在最后 print() 行之前还有一个额外的 space,python 对 space 真的很挑剔。我写了一个和你一样流程结构的小程序来演示:

# test.py
def test(teststr1, teststr2):
    if teststr1 == "test1":
        print("test1")
        if teststr2 == "test1":
            print("test1 test1")
        else:
            print("test1 else")

    elif teststr1 == "test2":
        print("test2")
        if teststr2 == "test1":
            print("test2 test1")
        else:
            print("test2 else")

    else:
        print("else")


test("test1", "test1")
test("test1", "foobar")
test("test2", "test1")
test("test2", "foobar")
test("foobar", "foobar")

输出:

$ python3 test.py
test1
test1 test1
test1
test1 else
test2
test2 test1
test2
test2 else
else

您可能需要查看 here 示例和参考资料。

我也同意括号更有意义,但是 python 会 python :P

elif 和外部 else 的缩进应与外部 if 的缩进相匹配。