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”)
Try something like this.
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.