在Python中跳出嵌套循环

2024-04-26 09:57:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望使用此循环同时移动两个“项目”:

import turtle as t
from turtle import *
import random as r
t1=Turtle()
t2=Turtle()
turtles=[t1,t2]
for item in turtles:
  item.right(r.randint(5,500))
c=0
for i in range(500):
    for item in turtles:
       item.forward(2)
       c=c+1
       if c==1:
         yc=item.ycor()
         xc=item.xcor()
       if c==2:
         c=0
         yc2=item.ycor()
         xc2=item.xcor()
       if yc-yc2<5 or xc-xc2<5:
         break  #here is my problem
#rest of code

如果对象在同一条xy行上,我想使用break行退出程序,但其中一个对象冻结,另一个对象继续运行,直到循环结束。我怎样才能让我的程序退出那个循环呢?在


Tags: 对象inimportforifasitemt1
2条回答

您的break语句无法按您想要的方式工作,因为它是一个嵌套循环。在

您应该使用例外:

try:
    for i in range(500):
        for item in turtles:
            ...
            if yc - yc2 < 5 or xc - xc2 < 5:
                raise ValueError
except ValueError:
    pass

但是,你必须注意不要错过任何你真正应该抓住的意外错误!


考虑将代码放入函数中以避免所有这些麻烦:

^{pr2}$

这被称为打破嵌套循环。 这是许多解决方案中的一个。在

stop = False

for j in i:
    if stop:
        break
    #Do stuff
    for k in j:
        #Do more stuff
        if (condition):
            stop = True
            break #breaks (for k in j) loop

相关问题 更多 >