2015-10-31 50 views
0

我試圖找出如何驗證用戶輸入,以便他們的輸入只能是以下數字之一:1 2或3.我目前的代碼好像它不能識別包含3數字:如何驗證某些數字的輸入?

我的代碼

options = "1", "2", "3" 

    while True: 
     option = input("\nEnter a Number [1][2][3]: ") 
     if option == options: 
      print ("Great") 
     else: 
      print ("Sorry, Invalid Input! Please Enter either [1] [2] [3]") 

options變量不正確寫入此代碼不能正常工作,以及其下的代碼塊。任何幫助將是偉大的!

+1

'options = [「1」,「2」,「3」]'和'options in options',改變這兩件事,它應該可以正常工作。 –

回答

0

使用list代替,這就是爲什麼我們有他們:

options = ["1", "2", "3"] 

然後,使用in運營商來檢查,如果發現某個值在列表中,您可以執行你的會員資格測試:

while True: 
    option = input("\nEnter a Number [1][2][3]: ") 
    if option in options: 
     print ("Great") 
    else: 
     print ("Sorry, Invalid Input! Please Enter either [1] [2] [3]") 
+0

感謝這工作最好 –

+0

不客氣,亞歷克斯。不要忘記將其中一個答案標記爲[accepted](http://stackoverflow.com/help/someone-answers)。 –

+0

完成!再次感謝 –

0

使用一組具有0(1)查找時間複雜

options = set('1', '2', '3') 

,然後在你的循環

if option in options: 
    print ("Great") 
    break # added break to end the while loop after a valid input 
但是

,如果你需要在每個這些位置的值,你可以使用字典裏面也有0(1)查找時間複雜性,但有一點更強大的在存儲方面/內存

options = { 
    '1': 'some value here', 
    '2': 'some value here', 
    '3': 'some value here' 
} 
+2

@AhsanulHaque不,我不這麼認爲。字典中的'in'查找比列表中的查詢要快得多。這就是我喜歡它的原因。無論如何它沒有更多的開銷。一般來說它是一個更好的做法:) –

+0

哦,是的,沒有這樣想。 –

+0

偉大的這是完美的,所以創建一本字典就是這樣,如果你不介意我問每個數字後寫真的目的是什麼?有目的嗎? –