2017-04-07 126 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

如上文所提到的umutto,你ç使用一個while循環。但是,對於每個有效輸入,不要使用break,您可以在最後有一箇中斷,使用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

一個更有效的代碼將

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 

我建議這個答案,因爲我認爲,Python是意味着簡約代碼做的一項工作。

0

就像mani的解決方案一樣,除了使用continue在這種情況下是多餘的。

而且,在這裏,我允許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")