Обработка множественных ошибок на Python

Мне было интересно, как я буду обрабатывать несколько ошибок на python.

Например:

Пользователь вводит целое число от 0 до 9. Если целое число выходит за пределы диапазона, программа сообщит об этом и запросит другой ввод, пока не будет получен правильный ввод. Если ввод не является целым числом, программа скажет, что это недопустимый ввод, и запросит другой ввод, пока не будет получен допустимый ввод. Наконец, если ввод не предоставлен, тогда программа скажет, что ввод должен быть, и запросит другой ввод, пока не будет получен действительный ввод. Эти три ошибки необходимо различать для одной входной переменной.

Спасибо за помощь в продвижении


person user3678070    schedule 27.05.2014    source источник
comment
Вы пробовали оператор if?   -  person Ignacio Vazquez-Abrams    schedule 27.05.2014


Ответы (3)


Если вы хотите проверить пользовательский ввод по нескольким критериям и продолжать запрашивать новый ввод, если какой-либо из них не пройден, вам, вероятно, нужен цикл, который будет продолжаться до тех пор, пока вы не получите правильный результат:

result = None
while result is None:
    input_str = input("Enter an integer between 0 and 9:")
    if input_str == "":
        print("An empty input is not valid.")
    else:
        try:
            result = int(input_str)
            if not 0 <= result <= 9:
                print("That number out of bounds.")
                result = None
        except ValueError:
            print("That is not an integer.")

# do stuff with result here
person Blckknght    schedule 27.05.2014

Что-то вроде этого может помочь:

valid = False
while not valid:
    in_val = input("Enter an integer: ")
    if not in_val:
        print("No input was given, please try again.")
        continue

    try:
        in_num = int(in_val)

        if in_num < 0 or in_num > 9:
            print("The value entered is out of the valid range (0-9).")
            continue
        valid = True
    except ValueError:
        print("The value entered was not a number, try again.")
        continue
person drohm    schedule 27.05.2014
comment
Я не думаю, что ясно, что ОП спрашивал об опциях командной строки, так что это может быть излишним. - person Blckknght; 27.05.2014

Попробуйте что-нибудь в этом роде:

wrong = True
while wrong:
        num = input("Enter a number between 0 and 9: ")
        if not num:
                print("Please enter valid input.")
                continue

        try:
                num = int(num)
        except ValueError:
                print("Please enter valid input.")
                continue

        if num < 0 or num > 9:
                print("Please enter a number between 0 and 9.")
                continue

        wrong = False

print(num)

Это работает как:

bash-3.2$
Enter a number between 0 and 9: 
Please enter valid input.
Enter a number between 0 and 9: 
Please enter valid input.
Enter a number between 0 and 9: hhello
Please enter valid input.
Enter a number between 0 and 9: 90
Please enter a number between 0 and 9.
Enter a number between 0 and 9: -2324
Please enter a number between 0 and 9.
Enter a number between 0 and 9: aisjdo93rwfeljks
Please enter valid input.
Enter a number between 0 and 9: 5
5
person A.J. Uppal    schedule 27.05.2014