2012-10-10 11 views
6

条件が正しく満たされていない場合、どのようにしてPythonをif文の先頭に移動させることができますか?選択肢が有効でない場合、最初のif文に戻る方法

私はこのような基本的な他/ if文があります。私が欲しいもの

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." 

がステートメント場合は、それらは、プログラム全体を再起動することなく、このための別の選択を行うことを促すことですが、非常に思いをPythonを初めて使用していて、どこでもオンラインで回答を見つけることが困難です。

+1

ループ全体を(通常は 'while')ラップする必要があります。 – quantumSoup

+0

それで私はそれをしますか?おかげで、どこで始めるのか分かりませんでした – wondergoat77

+0

@quantumSoupこれは私がdo-whileループを逃している、普通のwhileループでエミュレートするのは簡単ですが – TheZ

答えて

6

これを行うにはかなり一般的な方法は、入力が有効であるとき、ループを終了するbreak文で、無期限に実行されますwhile Trueループを使用することです:

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) 
+0

追加情報ありがとう! – wondergoat77

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." 
+0

ありがとう、あなたは自分自身を考え出し、質問、助けていただきありがとうございます – wondergoat77

+0

2行目の括弧は不要で、コロンが見つかりませんでした。また、 '(1、2)ではない間に'を使いやすくなります: '。 – deadly

+0

@deadly非常に良い。 –

3

あなたは

0再帰関数を使用することができます
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) 
関連する問題