Python - 如果输入无效,则返回函数的开头?

时间:2012-05-16 08:26:27

标签: python int

我正在尝试捕获输入错误 - 其中唯一有效的输入是整数。

如果输入非整数,我希望它返回到func的开头并再试一次:

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()

如果第一个输入有效,则此方法有效;如果输入无效,则返回到func的开头,但似乎没有将正确的有效返回到主func。我检查了子函数它看到了正确的变量,并且它的类型是正确的(int)并且看起来确实如此,但是我收到了一个错误:

UnboundLocalError: local variable 'iterationCap' referenced before assignment  

如果第一个输入有效(例如“10”),只有当第一个输入无效时(例如“a”后跟“10”),我才会看到此错误

2 个答案:

答案 0 :(得分:3)

尝试这样的事情。

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

print "Value is ",i

您当前的方法会递归调用您的函数来处理每个错误,这不是一个好习惯。错误是因为在异常处理程序块中,您没有定义iterationCap

答案 1 :(得分:2)

您需要在except语句中return setItorator()。现在,你只是调用函数并忽略输出。