Devmix
Devmix

Reputation: 1848

How to exit a while loop in python?

I'm working on this simple task where I need to use 2 while loops. The first while loop checks if the number of hours is less than 0 if it is then loop should keep asking the user. Here's my code:

hours = float(input('Enter the hours worked this week: '))

count = 0
while (0 > hours):
    print ('Enter the hours worked this week: ')
    count = count + 1

pay = float(input('Enter the hourly pay rate: '))
while (0 > pay):
    print ('Enter the hourly pay rate: ')
    count = count + 1

total_pay = hours * pay

print('Total pay: $', format(total_pay, ',.2f'))

Upvotes: 2

Views: 702

Answers (3)

Goodies
Goodies

Reputation: 4681

break is what you're looking for.

x = 100
while(True):
    if x <= 0:
        break
    x -= 1
print x # => 0

As for your example, there is nothing that would seem to cause a break to occur. For example:

hours = float(input('Enter the hours worked this week: '))

count = 0

while (0 > hours):
    print ('Enter the hours worked this week: ')
    count = count + 1

You are not editing the hours variable at all. This would merely continue to print out "Enter the hours worked this week: " and increment count ad infinitum. We would need to know what the goal is to provide any more help.

Upvotes: 5

munk
munk

Reputation: 12983

You exit a loop by either using break or making the condition false.

In your case, you take input from the user, and if hours < 0, you print the prompt and update the count, but you don't update hours.

while (0 > hours):
    print ('Enter the hours worked this week: ')
    count = count + 1

should be:

while (0 > hours):
    hours = float(input('Enter the hours worked this week: '))
    count = count + 1

Similarly for pay:

while (0 > pay):
    pay = float(input('Enter the hourly pay rate: '))
    count = count + 1

Upvotes: 4

Garrett R
Garrett R

Reputation: 2662

Well, the other answer shows you how to break out of a while loop, but you're also not assigning to the pay and hours variables. You can use the built-in input function to get what the user supplied into into your program

hours = float(input('Enter the hours worked this week: '))

count = 0
while (0 > hours):
    hours = input('Enter the hours worked this week: ')
    count = count + 1

pay = float(input('Enter the hourly pay rate: '))
while (0 > pay):
    pay =  input('Enter the hourly pay rate: ')
    count = count + 1

total_pay = hours * pay

print('Total pay: $', format(total_pay, ',.2f'))

Upvotes: 1

Related Questions