为什么这不会在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
答案 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
此代码生成与上一代码相同的输出。