1

我正在使用 Sikuli OCR 测试库。在我的 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()
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 回答