Использование «или» в операторе «if» в Try и Except в Python - PullRequest
1 голос
/ 30 октября 2019

Я хочу, чтобы цикл продолжался и перехватывал ошибки, такие как ввод "bob" в качестве ввода или целых чисел меньше 1 и больше 4.

salesNum = input("How many sales persons to process? ")
for num in salesNum:
    salesName = input("Enter Salesperson Name: ")
    salesLevel = 0
    while salesLevel == 0:
        try:
            salesLevel = int(input("Enter Salesperson Level: "))
            if salesLevel < 1 or salesLevel > 4:
                print("error, try again.")
                salesLevel = int(input("Enter Salesperson Level: "))
        except ValueError:
            print("error, try again")
            continue
    hoursWorked = float(input("Enter Hours Worked: "))
    salesAmount = float(input("Enter Number of Sales: "))
print("Clear")

Это прекрасно работает, если я сделаю одну ошибку, номножественные ошибки не обнаруживаются, и программа переходит к следующим вопросам. Я пытался разбить оператор if, но это не решает проблему.

Ответы [ 2 ]

2 голосов
/ 30 октября 2019

Ошибка не будет ValueError, поэтому либо измените ее на TypeError:

except TypeError:

, либо на любую ошибку:

except:
1 голос
/ 30 октября 2019
salesNum = input("How many sales persons to process? ")
for num in salesNum:
    salesName = input("Enter Salesperson Name: ")
    salesLevel = 0
    while salesLevel == 0:
        try:
            salesLevel = int(input("Enter Salesperson Level: "))
            if salesLevel < 1 or salesLevel > 4:
                print("error, try again.")
                salesLevel = int(input("Enter Salesperson Level: "))
        except Exception:
            print("error, try again")
            continue
    hoursWorked = float(input("Enter Hours Worked: "))
    salesAmount = float(input("Enter Number of Sales: "))
print("Clear")

попробуйте изменить ValueError на Exception, это уловит каждую неисправность

...