使用pyscripter进行输入取消的例外情况?

时间:2013-09-29 19:46:52

标签: python python-2.7 input pyscripter try-except

使用PySripter之类的程序时,以下代码除了正确...

基本上,输入值必须是1, 2, 3, 4 or 10,如果它不是这些数字中的任何一个,那么它会让它们再试一次。

如果他们选择了列表中的数字,那么它将继续执行脚本的下一部分。

PySripter当我运行它时会弹出一个框供我输入值但是如果我按下取消或红十字会发送“KeyboardInterrupt”异常但是我无法退出脚本/停止来自运行的脚本..

dvalues = [1, 2, 3, 4, 10]
d1 = None

while d1 is None:
    try:
        d1= int(input("First Value "))
        if not d1 in dvalues:
            d1= None
            print("Can't do this")
    except KeyboardInterrupt:
        print('Canceled')
        continue
    else:
         pass

任何人都知道我做错了什么?

修改

新错误,是否应退出整个脚本,如果退出第一个,第二个或任何输入而不是继续......

tot = int(15)
dvalues = [1, 2, 3, 4, 5, 10]

while tot > int(0):

    d1 = None
    while d1 is None:
        try:
            d1 = int(input("First Value"))
            if not d1 in dvalues:
                d1 = None
            else:
                print("Fail")
        except KeyboardInterrupt:
            break

    d2 = None
    while d2 is None:
        try:
            d2 = int(input("Second Value"))
            if not d2 in dvalues:
                d2 = None
            else:
                print("Fail")
        except KeyboardInterrupt:
            break

    total = d1+d2

2 个答案:

答案 0 :(得分:2)

而不是继续,请尝试使用 break 。它将结束循环而不是继续执行。 此外, else:pass 部分是多余的。

答案 1 :(得分:0)

你现在可能已经发现了这个,但你可以......

import sys
sys.exit(1)

...提前退出你的剧本 exit()接受错误代码,0表示“无错误”