Python Хотя цикл с обработкой исключений никогда не заканчивается - PullRequest
0 голосов
/ 07 октября 2019

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

Небольшое объяснение того, что я пытаюсь сделать:

Я полагаю, чтобы получить 3 входа: годы опыта(yearsexp), производительность (производительность) и случайный int генерируется между 1-10 (уровень). Программа спросит пользователя об их опыте, если между 3-11 они квалифицированы. Если нет, он скажет им, что они не являются квалифицированными и попросит повторно ввести значение. То же самое с производительностью. Если они вводят число, меньшее или равное 11, оно будет генерировать случайное значение int (уровень), на котором уровень точки будет использоваться для оценки их бонуса. Пользователь получает запрос об опыте, будет правильно работать и переходить к производительности. Тем не менее, даже при вводе правильного ввода, он продолжает просить их повторно ввести производительность #. Я не могу понять, почему он так застрял.

import random
error = True
expError = True
performanceError = True
# Get users name
name = input("Enter your name: ")

# Get users experience *MINIMUM of 3 yrs py
while (expError):
    try:
        yearsexp = int (input(name+", Enter the years of your experience: "))
        if (yearsexp >= 3 and yearsexp <= 11):
            expError = False
            print(name, "You are qualified")
        else:
            raise ValueError
    except:
        print ("You have entered an invalid number! Try again...")

#Get users performance
while (performanceError):
    try:
        performance = int (input(name+", Enter the performance: "))
        if (performance <= 11):
            expError = False
            print(name, "You are qualified")
        else:
            raise ValueError
    except:
        print ("You have entered an invalid number! Try again...")
        performanceError = False


# Get random level number
level = random.randint(1,11)
print ("Random Level: ", end =' ')
print (level)
bonus = 5000.00

while (error):
    try:
        if (level >=5 and level <=8):
            error = False
            print ("Expected Bonus: $5,000.00")
            print (name + ", your bonus is $", end =' ')
            print (bonus)
        elif (level <= 4 ):
            error = False
            bonus = bonus * yearsexp * performance * level
            print ("Expected bonus: ", end =' ')
            print (bonus)
            print (name + ", your bonus is $", end =' ')
            print (bonus)
        else:
            raise ValueError
    except:
        print ("You do not get a bonus")

1 Ответ

1 голос
/ 07 октября 2019

Вы не установили performanceError в False

if (performance <= 11):
    expError = False

необходимо изменить на

if (performance <= 11):
    performanceError= False
...