Python 为什么不';停不下来
为什么这不在p=5时停止?当q计数器达到1时,它应该停止,对吗?对不起,时间不早了,我很沮丧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" ...
... 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