2015-10-31 2 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 "]' и 'опция в вариантах', измените эту две вещи, она должна работать нормально. –

ответ

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

Добро пожаловать, Алекс. Не забудьте отметить один из ответов, предоставленных как [принято] (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 нет, я так не думаю. «Поиск» в словаре на тонну быстрее, чем в списке. поэтому я предпочитаю это. И в любом случае у него не так много накладных расходов. В общем, это лучшая практика :) –

+0

О да, не думал так. –

+0

Отлично, это прекрасно, поэтому создание словаря - это путь, если вы не возражаете, чтобы спросить, в чем заключается цель написания True после каждого номера? Есть ли цель? –

Смежные вопросы