2015-10-24 65 views
1

我在嵌套循環中斷時遇到了問題。嵌套循環的中斷縮進

假設找到特定的顏色,其例如包含在打開的文件與步驟50沿x20沿y的像素的進一步的代碼:

im1 = Image.open("C:\\Users\\Poos\\Desktop\\G\\green_pixel.bmp") 
A = list(im1.getdata()) 

x = 0 
y = 0 

im2 = ImageGrab.grab() 
B = list(im2.getdata()) 

for x in range(0,1024, 50): 
    for y in range(0,600, 20): 
     if(B != A): 
     im3 = im2.crop((x,y,x+1,y+1)) 
     B = list(im3.getdata()) 
     print(x, y) 

     else: 
     print("hooray!") 
     break 

     break 

一旦像素被檢測的兩個環路應該打破,打印一些文字。

但是,在放置外部中斷的地方,x循環不會中斷,多次打印我的文本。

看來,我已經嘗試了所有可能的變種外斷裂位置,但沒有任何作品。

這裏有什麼問題?

回答

1

考慮將代碼放入一個函數中,並使用return語句打破所有循環。

def func(): 
    im1 = Image.open("C:\\Users\\Poos\\Desktop\\G\\green_pixel.bmp") 
    A = list(im1.getdata()) 

    x = 0 
    y = 0 

    im2 = ImageGrab.grab() 
    B = list(im2.getdata()) 

    for x in range(0,1024, 50): 
     for y in range(0,600, 20): 
     if(B != A): 
      im3 = im2.crop((x,y,x+1,y+1)) 
      B = list(im3.getdata()) 
      print(x, y) 

     else: 
      print("hooray!") 
      return 

     return