11

条件が正しく満たされていない場合、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は非常に新しく、どこでもオンラインで答えを見つけるのに苦労しています。

4

3 に答える 3

14

これを行うかなり一般的な方法は、入力が有効な場合にループを終了するステートメントを使用して、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)
于 2012-10-10T21:39:01.783 に答える
4

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."
于 2012-10-10T21:36:27.197 に答える
4

再帰関数を使用できます

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)
于 2012-10-10T21:44:18.797 に答える