Ibrahim El-Rayes
Ibrahim El-Rayes

Reputation: 17

I can't figure out why this while loop isn't functioning properly

integer1 = eval(input('Enter the first integer between -10 and 10: '))

integer2 = eval(input('Enter the second integer between -10 and 10: '))

while (integer1 >= 10 or integer1 <= -10):
    replace1 = eval(input('Integer 1 is invalid, Please enter a valid number: '))

while (integer2 > 10 or integer2 < -10):
    replace2 = input('Integer2 is invalid, Please enter a valid number: ')

Upvotes: 1

Views: 47

Answers (2)

The6thSense
The6thSense

Reputation: 8335

I think this what you expected:

integer1 = eval(input('Enter the first integer between -10 and 10: '))

integer2 = eval(input('Enter the second integer between -10 and 10: '))

while (integer1 >= 10 or integer1 <= -10):
    integer1 = eval(input('Integer 1 is invalid, Please enter a valid number: '))

while (integer2 > 10 or integer2 < -10):
    integer2 = input('Integer2 is invalid, Please enter a valid number: ')

Since the value of integer1 is not changed in first while loop it will act as a infinite loop

Instead of eval you could use int() since there are some harmful effect on using eval stick with int

Modified:

integer1 = int(input('Enter the first integer between -10 and 10: '))

integer2 = int(input('Enter the second integer between -10 and 10: '))

while (integer1 >= 10 or integer1 <= -10):
    integer1 = int(input('Integer 1 is invalid, Please enter a valid number: '))

while (integer2 > 10 or integer2 < -10):
    integer2 = int(input('Integer2 is invalid, Please enter a valid number: '))

Upvotes: 1

kindall
kindall

Reputation: 184395

while (integer1 >= 10 or integer1 <= -10):
    replace1 = eval(input('Integer 1 is invalid, Please enter a valid number: '))

You never change integer1, so if the condition is true, it is always true and it loops forever.

Assign to integer1 rather than replace1. Similarly for the second.

Upvotes: 1

Related Questions