1

OCR テスト ライブラリである Sikuli を使用しています。私の Python スクリプトでは、表示される可能性のある 2 つの画像のうちの 1 つを探しています。それらのいずれかが表示された場合、if はそのオブジェクトを選択します。

ただし、スクリプトを終了させたいと思います。そうではありません。私は試しましたが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()
4

3 に答える 3

6

次のコマンドを使用して、任意のループを終了できます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は例外であり、通常はイテレータによって処理が完了したことを通知するために発生します。それを使用するほとんどの Python コードは、その例外をキャッチするだけで済みますが、発生させたい場合は、raise StopIteration()ステートメントを使用してください。ここでそうしても意味がありません。スクリプトは反復子として実行されてStopIterationおらず、例外は目的の効果をもたらしません。

于 2013-07-24T20:52:45.333 に答える
1

あなたはいつでもこれを行うことができます:

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()
于 2013-07-24T20:56:31.170 に答える
0

Python では、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
于 2013-07-24T20:57:37.427 に答える