为什么这不会停止

时间:2015-09-22 07:21:26

标签: 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"
...                 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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

声明for range in [0,10]:并不符合您的想法。它会在for循环中创建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

<强>输出

1 elso
2 elso
3 elso
3 masodik
4 elso
4 masodik
5 elso
5 masodik
5 sikerult

可以使用调用for函数的range()循环来改进此代码(我猜这是您尝试使用for range in [0,10]:语句执行的操作)。

for p in range(1, 10):
    print p, "elso"
    if p > 2:
        print p, "masodik"
        if p > 4:
            print p, "sikerult"
            break

此代码生成与上一代码相同的输出。