当我运行以下代码时,出现错误:“ IndentationError:unident与任何外部缩进级别都不匹配”。
我在做什么错?我在下面包含了我的代码以供参考:
file=open('csquetionseasy.txt','r')
print(file.read(432))
answersinputeasy=input('enter the letter responding to the correct answer for all 3 questions e.g. BBB')
if answersinputeasy==('BAA'):
print('you got 3/3!')
else:
if answersinputeasy==('BAB'):
print('2/3!')
else:
if answersinputeasy==('BBB'):
print('1/3!')
else:
if answersinputeasy==('ABB'):
print('0/3!')
else:
if answersinputeasy==('AAB'):
print('1/3!')
else:
if answersinputeasy==('AAA'):
print('2/3!')
else:
if answersinputeasy==('ABA'):
print('1/3!')
答案 0 :(得分:4)
使用elif
而不是else
。当else
和if
语句的值为false时,您需要elif
语句才能执行某些操作。
if answersinputeasy==('BAA'):
print('you got 3/3!')
elif answersinputeasy==('BAB'):
print('2/3!')
elif answersinputeasy==('BBB'):
print('1/3!')
elif answersinputeasy==('ABB'):
print('1/3!')
elif answersinputeasy==('AAA'):
print('2/3!')
elif answersinputeasy==('ABA'):
print('1/3!')
else:
print('Invalid Input')
此外,如果要指示代码块,则必须将代码块的每一行缩进相同的数量,通常为四个空格。
答案 1 :(得分:1)
出现错误"IndentationError: unident does not match any other indentation level"
的原因是因为您将选项卡链接在一起以创建嵌套的逻辑语句(以伪代码):
if <condition>:
#then do something
else if <condition>:
#then do something else
else if <condition>
#then do something further else
这不是Python喜欢在逻辑块中查看语法的方式。此外,您将要遇到的下一个错误将是在else子句中使用嵌套的if语句。
要在Python中运行else if
语句,您将要使用语法elif:
,后跟缩进行,如果满足该条件,则要执行的代码(用伪代码表示) ):
if <condition>:
#then do something
elif <condition>:
#then do something else
elif <condition>:
#then do something further else
另一个最佳实践是,如果您不打算进行任何进一步的验证,则应在条件块中包含显式的else
子句,并附带一堆elif
语句从用户那里得到的字符串上。假设用户传递了XYZ
。它们不会满足您已定义的任何条件,因此,代码将继续超出此逻辑块的底部(这可能不是好事)。在下面的代码中,我添加了一个示例,以显示显式else
子句的外观,但是最终由您决定什么对您的应用程序有意义:
file=open('csquetionseasy.txt','r')
print(file.read(432))
answersinputeasy=input('enter the letter responding to the correct answer for all 3 questions e.g. BBB')
if answersinputeasy==('BAA'):
# Code to be executed following an if-statement must be indented by 4 spaces:
print('you got 3/3!')
elif answersinputeasy==('BAB'):
# Code to be executed following an elif-statment (else-if) must be indented by 4 spaces:
print('2/3!')
elif answersinputeasy==('BBB'):
print('1/3!')
elif answersinputeasy==('ABB'):
print('0/3!')
elif answersinputeasy==('AAB'):
print('1/3!')
elif answersinputeasy==('AAA'):
print('2/3!')
elif answersinputeasy==('ABA'):
print('1/3!')
# Else clause would provide a default condition that executes if none of the prior cases are met.
else:
# Code following an else statment must be indented by 4 spaces:
#Example of a default Else-block entry:
print('Wasn\'t able to parase your entry into a valid answer!')