Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—当您可以';不要使用break语句?_Python_Loops - Fatal编程技术网

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
do
z
”——有点像循环,这是一种习惯用法。也许对OP来说有点太聪明了。虽然我们很聪明,但您可以将
lambda:input('Enter something:')
更改为
partial(input,“Enter something:”)
。我不认为它特别聪明。习惯用法是用
表示一个“直到
x
变成
y
do
z
”循环。