0

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

私が間違っていることを知っている人はいますか?

編集

新しいエラーです。続行するのではなく、最初、2番目、またはその他の入力で終了した場合、スクリプト全体を終了する必要があります...

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
4

2 に答える 2

2

continueの代わりに、 breakを使ってみてください。実行を継続する代わりに、ループを終了します。また、else: pass部分は冗長です。

于 2013-09-29T19:51:23.527 に答える
0

あなたはおそらく今までにこれを発見したでしょうが、あなたは...

import sys
sys.exit(1)

...スクリプトを早期に終了します。「エラーなし」を意味
exit()するエラーコードを受け入れます0

于 2013-11-11T22:58:28.900 に答える