我开始用Python学习编程几周了 而我遇到了一些麻烦。 下面的代码是一个很小的程序,它检查列表中是否有偶数,如果它找到第一个偶数,它就会突破循环:
numbers = [1, 3, 5]
position = 0
while position < len(numbers):
number = numbers[position]
if number % 2 == 0:
print('Found even number', number)
break
position += 1
else: # break not called
print('No even number found')
打印错误:
File "test.py", line 11
else: # break not called
^
SyntaxError: invalid syntax
这是一个缩进问题,如果我在“else”之前删除标签,那么将它与'while'对齐,程序运行得非常好:
while position < len(numbers):
number = numbers[position]
if number % 2 == 0:
print('Found even number', number)
break
position += 1
else:
print('No even number found')
# Prints: No even number found
我的问题是,为什么'else'需要与'while'对齐,而不是与循环内的'if'对齐?
这就是我想要认识的人! Thanx提前!
答案 0 :(得分:1)
试试这样:
numbers = [1, 3, 5]
position = 0
while position < len(numbers):
number = numbers[position]
if number % 2 == 0:
print('Found even number', number)
break
else: # break not called
print('No even number found')
position += 1
答案 1 :(得分:1)
当您删除缩进时,您正在使用while:else块。其他是附加到while,这意味着如果你的while条件是假的话它会运行。
while True:
##some looping code
else:
##code to run when while is false
如果缩进该行代码,则在生成if:else块时附加else。在这种情况下,如果为false,则执行else。
if True:
##code to run if true
else
##code to run if false
python中的代码块遵循相同的缩进。因为“else”是“while”块的一部分,它必须位于相同的tab位置才能工作,并且查看你的代码,我会说while:else块就是你想要的。 :)
答案 2 :(得分:1)
这是问题所在。在这种情况下,有两种类型的else
语句。如果将else
语句与while
对齐,则else
循环的条件变为false时将执行while
语句。
在您的代码中,当position < len(numbers)
不为真时,会执行else语句。
此外,语法问题的发生只是因为if
和else
语句之间有一行代码,position += 1
如果你想对你的else
语句使用if
语句(不是我开头建议的while
语句),你应该在这两行之间移动这行代码if
和else
。
试试这个:
while position < len(numbers):
number = numbers[position]
if number % 2 == 0:
print('Found even number', number)
break
else:
print('No even number found')
position += 1
希望这有帮助。