Обработка на множество грешки в 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
Не мисля, че е ясно, че OP пита за опциите на командния ред, така че това може да е много пресилено. - 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