Python - return to the start of a function if an invalid input is made?

int, python

Solution

Try something like this.

while True:
   try:
    i = int(raw_input("Enter value "))
    break
   except ValueError:
    print "Bad input"

print "Value is ",i

Your current approach will recursively call your function for every error which is not a good practice. The error is because inside your exception handler block, you're not defining `iterationCap`.

Problem

I'm trying to catch an input error - where the only valid input is an integer. If a non integer is input, I want it to return to the start of func and try again: ``` def setItorator(): try: iterationCap = int(raw_input("Please enter the number of nibbles you want to make: ")) print "You will make", iterationCap, "nibbles per file" except ValueError: print "You did not enter a valid integer, please try again" setItorator() return iterationCap if __name__ == "__main__": iterationCap = setItorator() ``` This method works if the first input is valid, and returns to the start of the func if a non valid input is made, but it does not seem to pass the correct valid back to the main func. I checked in the sub func that it sees the correct variable, and of the correct type (int) and it does appear to, but I get an error: ``` UnboundLocalError: local variable 'iterationCap' referenced before assignment ``` I do not see this error if the first input is valid (e.g. "10") only if the first input is not valid (e.g. "a" followed by "10")

Original source