проверка пользовательского ввода для python - PullRequest
0 голосов
/ 04 октября 2018

У меня очень простой вопрос, на который я не могу найти ответ, и я очень плохо знаком с python.Мне нужно проверить ввод пользователя, чтобы увидеть, ввел ли пользователь одну из четырех операций.Операция: «^», «&», «|» и «q» для выхода.Пользователь снова получит запрос, если он не введет допустимую операцию, поэтому необходим цикл while, есть ли способ проверить все операции в одной строке?вот код, который у меня есть до сих пор

    operation = input("enter an operation to be used\n")
    print('operation chosen:', operation)
    error = ("please enter |, &, ^, or q" )
    while operation != '&' 
    print(error)

Ответы [ 4 ]

0 голосов
/ 04 октября 2018
list1=['^','&','|','q']
operation = raw_input('Enter operation from "^&|q": ')
while operation not in list1:
    operation = raw_input('Invalid entry. Please choose from "^&|q": ')
print(operation)

в соответствии с заданным вопросом пользователь должен ввести только один вариант.для ответа @cash_the давка, если пользователь вводит '^ &', он по-прежнему принимает правильный ответ, что не должно иметь место.так что вышеприведенное это просто небольшая поправка.

0 голосов
/ 04 октября 2018

Вы можете сохранить все допустимые операции в массиве и проверить входные данные по этому массиву;правильный вход должен нарушить цикл, неправильный вход должен вызвать ошибку и цикл снова.

Пример кода ниже

allowd_operations= ['|','&','^', 'q' ]
operation = ''

while True:
    operation = input("enter an operation to be used\n")
    if operation in allowd_operations:
        # correct input
        break

    print('operation chosen:', operation)
    error = ("please enter |, &, ^, or q" )
    print(error)
0 голосов
/ 04 октября 2018

Добро пожаловать в путешествие по Python.Вот способ проверить пользовательский ввод с помощью рекурсии и функции, которая полезна для больших проектов и тех, где некоторые из этих переменных могут изменяться:

def checkinput(userinput):
    if userinput in ('|^&q'):
        return userinput
    else:
        loopinputline = input("please enter |, &, ^, or q\n" )
        return checkinput(loopinputline)


operation = str(input("enter an operation to be used\n"))
finalinput = checkinput(operation)
print('operation chosen:', finalinput)
0 голосов
/ 04 октября 2018

Эта установка будет принимать только входы, которые находятся в (^&|q) цикл будет циклически повторяться до тех пор, пока пользовательские входы этих вариантов не будут выбраны, начало инициализирует operation значением , а не в списке, чтобы запустить цикл,

operation = 'x'
while operation not in ('^&|q'):
    operation = input('Enter operation from "^%|q": ')
print('Operation chosen: {}'.format(operation))
Enter operation from "^%|q": a
Enter operation from "^%|q": s
Enter operation from "^%|q": d
Enter operation from "^%|q": ^
Operation chosen: ^

Этот маршрут будет делать то же самое и запрашивать у пользователя сообщение Invalid , хотя этот маршрут требует ввода перед циклом для инициализацииoperation

operation = input('Enter operation from "^&|q": ')
while operation not in ('^&|q'):
    operation = input('Invalid entry. Please choose from "^%|q": ')
print('Operation chosen: {}'.format(operation))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...