Python—当您可以';不要使用break语句?
在这种情况下,你如何打破循环(我还是一个初学者,所以我不知道所有的事情,即使这可能是一个“简单”的问题)Python—当您可以';不要使用break语句?,python,loops,Python,Loops,在这种情况下,你如何打破循环(我还是一个初学者,所以我不知道所有的事情,即使这可能是一个“简单”的问题) 正如您所看到的,您无法跳出循环,因为“quit”超过3个字符。您应该像这样重新构造程序,将第二个if语句置于第一个if语句之上: while True: s = input('Enter something : ') if s == 'quit': # Do this check first break elif len(s) > 3: #
正如您所看到的,您无法跳出循环,因为“quit”超过3个字符。您应该像这样重新构造程序,将第二个if语句置于第一个if语句之上:
while True:
s = input('Enter something : ')
if s == 'quit': # Do this check first
break
elif len(s) > 3: # Then see if the input is too long
print('too big')
continue
print('something')
您应该像这样重新构造程序,将第二个if语句置于第一个if语句之上:
while True:
s = input('Enter something : ')
if s == 'quit': # Do this check first
break
elif len(s) > 3: # Then see if the input is too long
print('too big')
continue
print('something')
您可以使用sentinel值和for
循环,而不是while
:
for s in iter(lambda: input('Enter something : '), 'quit'):
if len(s) > 3:
print('too big')
else:
print('something')
您可以使用sentinel值和for
循环,而不是while
:
for s in iter(lambda: input('Enter something : '), 'quit'):
if len(s) > 3:
print('too big')
else:
print('something')
如果s==“quit”在长度检查上方移动
?这里的问题不是break
语句。您可以使用break
很好。它正在解决您遇到问题的程序逻辑。Down/close投票似乎有点苛刻,这是一个诚实的问题。我认为您应该阅读这个移动,如果s=='quit'
超过长度检查?这里的问题不是break
语句。您可以使用break
很好。它正在解决您遇到问题的程序逻辑。向下/关闭投票似乎有点苛刻,这是一个诚实的问题。我认为您应该阅读本文,我认为最好将其更改为,而s!='退出“
”以获得更易于理解的流程。就我个人而言,我也会在循环外部打破有效性检查,并将输入
包装起来,但这在这里不太相关。@BenjaminGruenbaum我不同意-然后你需要在循环外部初始化s
。谢谢,现在可以了,但为什么if语句的顺序在这种情况下如此重要?在你的旧代码中,如果用户输入“quit”
,第二个if语句将永远不会执行,因为第一个if语句的条件已通过。因此,我将第二个if语句放在第一位,以便立即执行。然后,一旦我们确认用户没有输入quit,我们可以检查输入的长度,并将打印得太大“
必要时发送消息。我认为最好将其更改为,而s!=”退出“
”以获得更易于理解的流程。就我个人而言,我也会在循环外部打破有效性检查,并将输入
包装起来,但这在这里不太相关。@BenjaminGruenbaum我不同意-然后你需要在循环外部初始化s
。谢谢,现在可以了,但为什么if语句的顺序在这种情况下如此重要?在你的旧代码中,如果用户输入“quit”
,第二个if语句将永远不会执行,因为第一个if语句的条件已通过。因此,我将第二个if语句放在第一位,以便立即执行。然后,一旦我们确认用户没有输入quit,我们可以检查输入的长度,并将打印得太大“
必要时发送消息。请注意。也许对OP来说有点太聪明了。虽然我们很聪明,但您可以将lambda:input('Enter something:')
更改为partial(input,“Enter something:”)
。我不认为它特别聪明。用表示一个“直到x
变成y
doz
”——有点像循环,这是一种习惯用法。也许对OP来说有点太聪明了。虽然我们很聪明,但您可以将lambda:input('Enter something:')
更改为partial(input,“Enter something:”)
。我不认为它特别聪明。习惯用法是用表示一个“直到x
变成y
doz
”循环。