在Python中停止While循环并退出脚本

时间:2013-07-24 20:51:45

标签: python while-loop sikuli

我正在使用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()

3 个答案:

答案 0 :(得分: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是一个例外,通常由迭代器引发,表示它们已完成。大多数使用它的Python代码只需 catch 该异常,但如果你想提出它,请使用raise StopIteration()语句。这样做没有意义;您的脚本未作为迭代器运行,StopIteration异常将无法获得所需的效果。

答案 1 :(得分: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()

答案 2 :(得分: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