Can someone please explain to me why this program returns an error about not being able to convert ''
to int
? I know it can’t be converted, but why does it even go into the while loop after entering ''
?
x = input('Enter a number: ') difference = 0 while str(x) != '': y = x x = input() if difference < int(y) - int(x): difference = int(y) - int(x) else: print(difference)
Result:
Traceback (most recent call last): File "E:ProgramingPythonUloha.py", line 7, in <module> if difference < int(y) - int(x): ValueError: invalid literal for int() with base 10: ''
Advertisement
Answer
You’re not checking if x
equals ''
in between getting it via input
and attempting to pass it to int
:
x = input() if difference < int(y) - int(x):
It’s already in the while loop at that point. You could rearrange things like this:
y = x = input('Enter a number: ') difference = 0 while x != '': new_difference = int(y) - int(x) if difference < new_difference: difference = new_difference y = x x = input() print(difference)
This way it will check the condition after input
, and only run the loop again if x
isn’t ''
.
Also note that x
is already a string, so str(x)
is unnecessary, and there’s no need to calculate the new difference twice each time. (The else
isn’t necessary here either, since there’s no possibility you’ll break out of the loop.)