簡體   English   中英

突破python烏龜的嵌套循環

[英]Breaking out of nested loop in python turtle

我希望使用此循環一次移動兩個“項目”:

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線上直到最接近的5,我想使用break退出程序,但是其中一個對象凍結,而另一個對象一直循環直到循環結束。 我如何使我的程序退出該循環?

您的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

這被稱為突破嵌套循環。 這是其中一種解決方案。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM