2015-10-24 44 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