Как создать при l oop вход для принятия только 1 или 2 в качестве ввода в python? - PullRequest
0 голосов
/ 11 января 2020
x = 0
while not in range(1,3):
    x = input("Choose1 or 2 : ")

Я много раз пытался этот код принять только 1 или 2 значения. Но мне не удалось остановить l oop после ввода правильного ввода. Пожалуйста, помогите мне исправить это.

Ответы [ 2 ]

2 голосов
/ 11 января 2020

В вашем коде две ошибки:

  • Вы не проверяете значение x в while l oop.
  • Результат оператора input является строкой, поэтому вы не можете сравнить ее с int без явного преобразования ее в формат int.
x = 0
while x not in range(1,3):
    x = int(input("Choose1 or 2 : "))
1 голос
/ 11 января 2020

Вы не проверяете переменную в while not in range(1, 3):, потому что вы не определили никакую переменную в этом операторе,

Таким образом, вы должны ввести правильный оператор, например,

while x not in range(1, 3):

ИЛИ

while not x in range(1, 3):

Во-вторых, input('...') всегда будет возвращать тип str, а не int, поэтому вы должны изменить его на

x = input('Choose 1 or 2: ')

Таким образом, ваш полный код будет:

x = 0
while x not in range(1,3):
    x = int(input("Choose1 or 2 : "))

Вы можете добавить исключение, если x не равно 1 или 2, например:

x = int() #same as x = 0
while x not in range(1, 3):
    try:
       x = int(input('Choose 1 or 2: '))
    except:
       print('Chosen number is not 1 or 2')
    if x not in range(1, 3):
       print('Chosen number is not 1 or 2')
...