Python 为什么不';停不下来

Python 为什么不';停不下来,python,Python,为什么这不在p=5时停止?当q计数器达到1时,它应该停止,对吗?对不起,时间不早了,我很沮丧 ... q=0 ... p=1 ... while q < 1: ... for range in [0,10]: ... if p < 10: ... print p,"elso" ... if p > 2: ... print p, "masodik" ...

为什么这不在p=5时停止?当q计数器达到1时,它应该停止,对吗?对不起,时间不早了,我很沮丧

... q=0
... p=1
... while q < 1:
...     for range in [0,10]:
...         if p < 10:
...             print p,"elso"
...             if p > 2:
...                 print p, "masodik"
...                 if p > 4:
...                     print p, "sikerult"
...                     q+=1
...                     p+=1
...                 else:
...                     p+=1
...             else:
...                 p+=1
...         else:
...             print p, "nem jo"
...             p+=1
...             
1 elso
2 elso
3 elso
3 masodik
4 elso
4 masodik
5 elso
5 masodik
5 sikerult
6 elso
6 masodik
6 sikerult
。。。q=0
... p=1
... 当q<1时:
...     对于[0,10]中的范围:
...         如果p<10:
...             打印p,“elso”
...             如果p>2:
...                 打印p,“马赛克”
...                 如果p>4:
...                     打印p,“sikerult”
...                     q+=1
...                     p+=1
...                 其他:
...                     p+=1
...             其他:
...                 p+=1
...         其他:
...             打印p,“nem jo”
...             p+=1
...             
1艾尔索
2埃尔索
3艾尔索
3马赛克
4艾尔索
4马赛克
5艾尔索
5马赛克
5西克鲁特
6艾尔索
6马赛克
6西克鲁特

一旦条件不再满足,while循环不会立即在其中的任何代码行停止。当执行返回到包含
的行,并且发现条件为false时,它将停止。直到
for
循环完成,您的程序才开始检查

对于[0,10]中的范围的语句
没有做您认为它做的事情。它在
while
循环中为
创建
循环。
for
循环在第一个循环中将名为
range
的变量设置为0,然后在下一个循环中将
range
设置为10。然后该循环结束,
while
循环的下一个循环开始

因此,只需删除
for
语句,使代码的行为符合您的要求。通过去掉各种冗余的
p+=1
语句,我稍微优化了您的代码

q = 0
p = 1
while q < 1:
    if p < 10:
        print p, "elso"
        if p > 2:
            print p, "masodik"
            if p > 4:
                print p, "sikerult"
                q+=1
    else:
        print p, "nem jo"
    p+=1
使用调用
range()
函数的
for
循环可以改进此代码(我猜这就是您在[0,10]:
语句中尝试使用
for range所做的)


此代码产生与前一代码相同的输出。

为什么要停止?您没有任何代码可以让它这样做。代码仍然必须完成内部循环。for循环首先完成。您可以在q增加后添加中断命令。由于它是一个嵌套循环,可能也会有帮助。您希望[0,10]中的范围
做什么:
可以做什么?您能修复它,让我在条件不再满足时停止吗?感谢最简单的解决方案是在您知道q不可接受的部分后使用
break
。(
如果q>1:break
)。但是如果您有嵌套循环(如此处),则必须将代码提取到函数中,并使用
return
而不是
break
,或者提出一些异常并在
while
循环之外处理它。@GergelyPuskás您已经产生了一些严重的基本误解,我们修复您的代码无法解决这些误解。您需要回到基础,更仔细地阅读循环,并尝试一些您自己的玩具程序,看看它们是否按照您的预期运行。这个程序对学习来说有点太乱了。我猜您正在学习一门课程,在这门课程中,您仍将编写大量代码。如果你想处理好它,那么现在就在你的基础上努力吧。
1 elso
2 elso
3 elso
3 masodik
4 elso
4 masodik
5 elso
5 masodik
5 sikerult
for p in range(1, 10):
    print p, "elso"
    if p > 2:
        print p, "masodik"
        if p > 4:
            print p, "sikerult"
            break