web-dev-qa-db-ja.com

有効な選択肢がない場合に最初のifステートメントに戻る方法

条件が正しく満たされていない場合、どうすればPython ifステートメントの先頭に移動できますか。

私は次のような基本的なif/elseステートメントを持っています:

print "pick a number, 1 or 2"
a = int(raw_input("> ")

if a == 1:
    print "this"
if a == 2:
    print "that"
else:
   print "you have made an invalid choice, try again."

私が欲しいのは、プログラム全体を再起動しなくても、このifステートメントに対して別の選択をするようにユーザーに促すことですが、Pythonは非常に新しく、どこでもオンラインで答えを見つけるのに問題があります。

10
wondergoat77

これを行うためのかなり一般的な方法は、無期限に実行されるwhile Trueループを使用し、入力が有効なときにbreakステートメントを使用してループを終了することです。

print "pick a number, 1 or 2"
while True:
    a = int(raw_input("> ")
    if a == 1:
        print "this"
        break
    if a == 2:
        print "that"
        break
    print "you have made an invalid choice, try again."

ここには、再試行の回数を制限するための優れた方法もあります。次に例を示します。

print "pick a number, 1 or 2"
for retry in range(5):
    a = int(raw_input("> ")
    if a == 1:
        print "this"
        break
    if a == 2:
        print "that"
        break
    print "you have made an invalid choice, try again."
else:
    print "you keep making invalid choices, exiting."
    sys.exit(1)
10
Andrew Clark

Whileループを使用します。

print "pick a number, 1 or 2"
a = None
while a not in (1, 2):

    a = int(raw_input("> "))

    if a == 1:
        print "this"
    if a == 2:
        print "that"
    else:
        print "you have made an invalid choice, try again."
4
Jordan Kaye

再帰関数を使用できます

def chk_number(retry)
    if retry==1
        print "you have made an invalid choice, try again."
    a=int(raw_input("> "))
    if a == 1:
        return "this"
    if a == 2:
        return "that"
    else:
        return chk_number(1)

print "Pick a number, 1 or 2"
print chk_number(0)
4
Abhishek Bhatia