Using continue in a try and except inside while-loop
1 2 3 4 5 | try: num=float(num) except: print"Invalid input" continue |
我的代码的这部分似乎是烦恼,但当我删除尝试,除了一切顺利,所以这似乎是问题。
我想将while循环中的输入转换为整数,如果输入不是整数,它将显示错误并继续循环并再次询问。 但是,它不会继续循环,只是永远打印"无效输入"。 怎么没有继续循环?
这是整个代码,万一其他可能是错误的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 |
您可以通过将变量赋值移动到try块中来解决问题。 这样,当引发异常时,会自动避免您要跳过的内容。 现在没有理由
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 |
您可以通过删除复制提示的需要来进一步收紧这一点
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 |
continue意味着返回while,而num永远不会改变,你将陷入无限循环。
如果要在发生异常时转义循环,请改用术语break。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # this function will not stop untill no exception trown in the try block , it will stop when no exception thrown and return the value def get() : i = 0 while (i == 0 ) : try: print("enter a digit str :") a = raw_input() d = int(a) except: print 'Some error.... :( ' else: print 'Everything OK' i = 1 return d print(get()) |