Danah Danah - 1 month ago 8
Python Question

Using continue in a try and except inside while-loop

try:
num=float(num)
except:
print "Invalid input"
continue


this part of my code seems to be bugging, but when i remove the try and except everything works smoothly, so this seems to be the problem.

i want to convert the input inside a while loop to an integer, if the input isn't an integer it'll display an error and just continue with the loop and ask again. however, it doesn't continue the loop and just keeps printing "Invalid input" forever. how come it isn't continuing the loop?

here is the entire code, in case something else might be wrong:

c=0
num2=0
num=raw_input("Enter a number.")
while num!=str("done"):
try:
num=float(num)
except:
print "Invalid input"
continue
c=c+1
num2=num+num2
num=raw_input("Enter a number.")
avg=num2/c
print num2, "\t", c, "\t", avg

Answer

You can solve the problem by moving the variable assignments into the try block. That way, the stuff you want to skip is automatically avoided when an exception is raised. Now there is no reason to continue and the next prompt will be displayed.

c=0
num2=0
num=raw_input("Enter a number.")
while num!=str("done"):
     try:
          num=float(num)
          c=c+1
          num2=num+num2      
     except:
          print "Invalid input"
     num=raw_input("Enter a number.")
avg=num2/c
print num2, "\t", c, "\t", avg

You can tighten this a bit further by removing the need to duplicate the prompt

c=0
num2=0
while True:
    num=raw_input("Enter a number. ")
    if num == "done":
        break
    try:
        num2+=float(num)
        c=c+1
    except:
        print "Invalid input"
avg=num2/c
print num2, "\t", c, "\t", avg