Python If/else while循环内部的正确缩进
大约几周前,我开始学习Python编程 我遇到了一些麻烦。 下面的代码是一个小程序,它检查列表中是否有偶数,如果找到第一个偶数,它将跳出循环:Python If/else while循环内部的正确缩进,python,if-statement,while-loop,Python,If Statement,While Loop,大约几周前,我开始学习Python编程 我遇到了一些麻烦。 下面的代码是一个小程序,它检查列表中是否有偶数,如果找到第一个偶数,它将跳出循环: numbers = [1, 3, 5] position = 0 while position < len(numbers): number = numbers[position] if number % 2 == 0: print('Found even number', number) brea
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')
这是一个缩进问题,如果我删除“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
位置
数字=数字[位置]
如果数字%2==0:
打印('找到偶数',数字)
打破
位置+=1
其他:
打印('未找到偶数')
#打印:未找到偶数
我的问题是,为什么“else”需要与“while”对齐,而不是与循环中的“if”对齐
这就是我想知道的,伙计们!
先走一步 试着这样做:
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
number=[1,3,5]
位置=0
位置
删除缩进时,使用的是while:else块。else正在连接到while,这意味着如果while条件为false,它将运行
while True:
##some looping code
else:
##code to run when while is false
if True:
##code to run if true
else
##code to run if false
当缩进该行代码时,将else附加到if,生成if:else块。在这种情况下,如果if为false,则执行else
while True:
##some looping code
else:
##code to run when while is false
if True:
##code to run if true
else
##code to run if false
python中的代码块遵循相同的缩进。因为“else”是“while”块的一部分,所以它必须位于相同的选项卡位置才能工作,并且查看您的代码,我会说while:else块就是您想要的 这就是问题所在。本例中有两种类型的
else
语句。如果将else
语句与while
对齐,则else
语句将在while
循环的条件变为false时执行
在代码中,当position
不为true时,执行else语句
此外,语法问题的出现仅仅是因为在if
和else
语句之间有一行代码,即position+=1
如果要对If
语句使用else
语句(而不是我在开头建议的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
位置
数字=数字[位置]
如果数字%2==0:
打印('找到偶数',数字)
打破
其他:
打印('未找到偶数')
位置+=1
希望这有帮助。
位置+=1
缩进不正确。@AndrewL。这不是真的需要缩进else语句吗?@bjskistad没有通读问题,不确定OP是否希望在if/else之外有position+=1
。是的,在else中缩进print调用。是的,伙计们,需要缩进的是else语句,现在才发现。boolean在Python中是大写的:)就是这样。我会编辑的。谢谢。while:。。。否则:如果在while循环中从未执行过break
,则块将运行,这与您的描述不同。谢谢,您的解释让我掌握了窍门!是的,我正在读的那本书没有解释这一点。这也起到了作用,谢谢你!当然@代码成瘾