2017-04-07 13 views
0

これは私の質問です。私は、入力が間違っている場合に繰り返す必要のある入力コードを持っています。Python - whileループを使ったコードの繰り返し

input_var_1 = input("select input (1, 2 or 3)") 
if input_var_1 == ("1"): 
    print ("you selected 1") 
elif input_var_1 == ("2") 
    print ("you selected 2") 
elif input_var_1 == ("3") 
    print (you selected 3") 
else: 
    print ("please choose valid option") 

私はELSEの後に追加する何の間のすべてのコードよう:これまでのところ、これは私が(これは単なるサンプルコードであることに注意し、印刷および入力で、私が持っている実際の値が異なっているものです最初のIFと最後のELIFが入力が有効になるまで繰り返されますか?私は今、コードを3回繰り返すだけですが、その問題は入力要求を3回しか繰り返さないことと大きすぎて非実用的です。

はご協力いただきありがとうございます!

+0

https://wiki.python.org/moin/WhileLoop – zondo

+0

どう 'についてTrue:をコードの先頭に置いて正しい入力を打ち切りますか? – umutto

答えて

2

を使用すると、C、 umutto で触れたようにwhileループを使用してください。ただし、有効な入力ごとにbreakを使用する代わりに、最後に1つの改行を入れることができます。これは、continueを使用して間違った入力をスキップしてループを継続します。次のように

while True: 
    input_var_1 = input("select input (1, 2 or 3): ") 
    if input_var_1 == ("1"): 
     print ("you selected 1") 
    elif input_var_1 == ("2"): 
     print ("you selected 2") 
    elif input_var_1 == ("3"): 
     print ("you selected 3") 
    else: 
     print ("please choose valid option") 
     continue 
    break 

また、コードでいくつかの構文エラーを解決しました。これはテストされています。

+0

ありがとう、あなたは、ソリューションの変種は私を助けた。 – Andriy

1

ずっと効果的なコードは、私のpythonは最小限のコードで仕事をすることを意図していることを信じているので、私はこの答えを示唆し

input_values=['1','2','3'] 
while True: 
    input_var_1 = input("select input (1, 2 or 3): ") 
    if input_var_1 in input_values: 
     print ("your selected input is "+input_var_1) 
     break 
    else: 
     print ("Choose valid option") 
     continue 

になります。

0

この場合、continueの使用を除いて、maniのソリューションと同様です。

また、ここではI許可のint()フロート()または(int型に正規化された文字列()入力)

while 1: 
    input_var_1 = input("select input (1, 2, or 3): ") 
    if input_var_1 in ('1','2','3',1,2,3): 
     input_var_1 = int(input_var_1) 
     print 'you selected %s' % input_var_1 
     break 
    else: 
     print ("please choose valid option") 
関連する問題