Перезапуск функции пользовательского ввода, если пользовательские данные неверны - PullRequest
0 голосов
/ 28 октября 2018

Я довольно новичок в Python и программировании.

Я много раз обдумывал, как это сделать, перезапуская пользовательскую функцию, если введенные пользователем данные недействительны, и большинство ответовЯ наткнулся на функцию while, но я не могу правильно реализовать ее в своем коде.

Мой код выглядит так:

mchoices = input('Enter A or B or C or D or E or F: ')
def getRate(choices):
    if choices ==  'A':
        return 'Rate = ' + str(options[0]) + '%'
    elif choices == 'B':
        return 'Rate = ' + str(options[1]) + '%'
    elif choices == 'C':
        return 'Rate = ' + str(options[2]) + '%'
    elif choices == 'D':
        return 'Rate = ' + str(options[3]) + '%'
    elif choices == 'E':
        return 'Rate = ' + str(options[4]) + '%'
    elif choices == 'F':
        return 'Rate = ' + str(options[5]) + '%'
    else:
        return 'Please enter a valid option'
print(getRate(mchoices))

options равен диапазону (1,20) и Radint (2,6), я не думаю, что это имеет отношение к моей проблеме, но я упоминаю об этом, если вы не понимаете, что это такое.Если это уместно, я добавлю и эту часть кода.

Основная проблема, с которой я сталкиваюсь, заключается в том, что в нижней части, в «другой» части моего кода, поверхон возвращает «Пожалуйста, введите верную опцию». Я также хотел бы, чтобы он перезапустил программу, чтобы пользователь мог выполнить другой ввод.

Я ожидаю, что ответ что-то сделает с циклом while, что нормально,Я просто не могу сделать это сам.

1 Ответ

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

определить метод получения пользовательского ввода.

$ cat askuser.py
#!/usr/bin/python3

# here's you getRate() method.

def getRate(choices):
    # I can only guess at what options is meant to be.
    options = [10,20,30,40,50,60]
    if choices ==  'A':
        return 'Rate = ' + str(options[0]) + '%'
    elif choices == 'B':
        return 'Rate = ' + str(options[1]) + '%'
    elif choices == 'C':
        return 'Rate = ' + str(options[2]) + '%'
    elif choices == 'D':
        return 'Rate = ' + str(options[3]) + '%'
    elif choices == 'E':
        return 'Rate = ' + str(options[4]) + '%'
    elif choices == 'F':
        return 'Rate = ' + str(options[5]) + '%'
    else:
        return 'Please enter a valid option'

def ask():
    user_input = 'None'
    while user_input not in ['A','B','C','D','E','F']:
        user_input = input("Enter A, B, C, D or E: ")
    return(user_input)

# voila!
print(getRate(ask())

Вот что происходит при запуске этого сценария:

$ ./askuser.py
Enter A, B, C, D or E: i
Enter A, B, C, D or E: 0
Enter A, B, C, D or E: XXXXX
Enter A, B, C, D or E: e
Enter A, B, C, D or E: E
Rate = 50%
...