打破python龟中的嵌套循环

时间:2018-02-24 20:10:04

标签: python python-3.x nested-loops break turtle-graphics

我想要两件物品'使用此循环立即移动:

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

我想使用break行退出我的程序,如果该对象位于同一xy行,最接近5,但是其中一个对象冻结了另一个继续前进,直到循环结束。我如何让我的程序退出该循环呢?

2 个答案:

答案 0 :(得分:3)

您的break语句无法按您的方式运行,因为它是嵌套循环。

您应该使用例外:

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

但是,您必须注意不要通过任何您应该实际捕获的意外错误!


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

def move_turtles(turtles):
    for i in range(500):
        for item in turtles:
            ...
            if yc - yc2 < 5 or xc - xc2 < 5:
                return

move_turtles(turtles)
# rest of code

答案 1 :(得分:2)

这被称为打破嵌套循环。 这是一个解决方案,其中包括许多解决方案。

{{1}}