Daniel Rogers
Daniel Rogers

Reputation: 75

Python While Loop w/ Exception handling never ending

I am running into a little problem that I cannot figure out. I am getting stuck in a while loop. I have 3 while loops, the first one executes as planned and then goes into the second. But then it just gets stuck in the second and I cannot figure out why.

A little explanation on what I am trying to do:

I am suppose to get 3 inputs: years of experience (yearsexp), performance (performance) and a random int generated between 1-10(level). The program will ask the user for their experience, if it is between 3-11 they are qualified. If not, it will tell them they are not qualified and ask to re-enter a value. Same thing with performance. If they enter a number less than or equal to 11 it will procede to generate the random int (level) at which point level will be used to asses their bonus. The user gets prompted for experience and will function correctly and proceed to performace. However, even when entering a valid input, it keeps asking them to re-enter the performance #. I cannot figure out why its getting stuck this way.

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")

Upvotes: 0

Views: 418

Answers (1)

abhilb
abhilb

Reputation: 5757

You didn't set the performanceError to False

if (performance <= 11):
    expError = False

needs to be changed to

if (performance <= 11):
    performanceError= False

Upvotes: 1

Related Questions