2013-07-24 4 views
0

Sikuli OCR 테스트 라이브러리를 사용하고 있습니다. 내 파이썬 스크립트에서 나는 두 가지 가능한 이미지 중 하나를 찾고 있습니다. 그들 중 하나가 나타나면, 그 객체를 선택합니다.While 루프 중지 및 Python에서 스크립트 종료

그러나 스크립트를 끝내고 싶습니다. 그렇지 않습니다. 나는 quit()exit()을 시도했지만 그렇게하지는 않습니다. while 루프를 멈추고 스크립트를 완료하는 것 외에도 잘 작동합니다.

while True: 
    if exists ("lose.png"): 
     click ("lose.png") 
     print ("***** YOU LOSE! *****") 
    if exists ("win.png"): 
     click ("win.png") 
     print ("***** YOU WIN! *****") 
    StopIteration 

quit() 
+0

나는 너가 OCR로 일하고있는 것처럼 보이지 않는다. 이 이미지들, 당신이 감지하려고하는 텍스트가 아닙니다 .. –

답변

5

당신은 break 어떤 루프를 종료 할 수 있습니다 :

while True: 
    if exists ("lose.png"): 
     click ("lose.png") 
     print ("***** YOU LOSE! *****") 
     break 

    if exists ("win.png"): 
     click ("win.png") 
     print ("***** YOU WIN! *****") 
     break 

if 문 중 어느 것도 True로 평가되는 경우, 루프가 계속됩니다.

StopIteration은 예외이며 일반적으로 반복기가 완료되었음을 알리기 위해 발생시킵니다. 그것을 사용하는 대부분의 파이썬 코드는 을 제외하고는을 캐치해야하지만, 그것을 올리고 싶다면 raise StopIteration() 문을 사용하십시오. 여기에서 그렇게 할 필요는 없습니다. 스크립트가 반복자로 실행되지 않고 StopIteration 예외가 원하는 효과를 내지 못합니다.

+1

물론, OP는 하나 또는 다른 것이 존재하는 경우에만 루프를 빠져 나가야합니다 ... –

+0

또한 루프의 몸 안에'StopIteration'을 올리는 것은 실제로는 없습니다 당신이 원하는 것을하십시오; iterator에서 * 발생시켜야합니다. * – kindall

+0

예. 하지만 두 개의 if 문에서 실행이 중지됩니다. 스크립트가 두 이미지 중 하나를 발견 할 때까지 휴식하고 싶지 않습니다. break를 사용하면 스크립트가 중지됩니다. - [정보] 종료 코드 : 0 (내가 언급 했어야했는데) 이것이 내가 StopIteration으로 시도한 이유입니다. – Dave

0

당신은 항상이 때문에 수 : 파이썬에서

status = TRUE 
while status: 
     if exists ("lose.png"): 
      click ("lose.png") 
      print ("***** YOU LOSE! *****") 
      status = FALSE 
     if exists ("win.png"): 
      click ("win.png") 
      print ("***** YOU WIN! *****") 
      status = FALSE 
     StopIteration 

    quit() 
0

, break 루프를 종료하는 데 사용됩니다. 스크립트를 종료하려면 sys.exit()을 사용하십시오. 따라서 :

while True: 
    if exists ("lose.png"): 
     click ("lose.png") 
     print ("***** YOU LOSE!*****") 
    if exists ("win.png"): 
     click ("win.png") 
     print ("***** YOU WIN!*****") 
    break // Exit the loop 
import sys; sys.exit() // Close the program