由于制表符或 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 中,您的 elif
和 else
语句必须与您希望它们对应的 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
的缩进相匹配。
我是 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 中,您的 elif
和 else
语句必须与您希望它们对应的 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
的缩进相匹配。