在try中使用continue,而在while循环中除外

时间:2016-11-01 22:51:13

标签: python

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

我的代码的这一部分似乎是错误的,但是当我删除了试验,除了一切顺利,所以这似乎是问题。

我想将while循环中的输入转换为整数,如果输入不是整数,它将显示错误并继续循环并再次询问。但是,它不会继续循环,只是永远打印“无效输入”。怎么没有继续循环?

这是整个代码,以防其他可能出错:

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

3 个答案:

答案 0 :(得分:2)

您可以通过将变量赋值移动到try块中来解决问题。这样,当引发异常时,会自动避免您要跳过的内容。现在没有理由continue,将显示下一个提示。

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

您可以通过不再复制提示

来进一步加强这一点
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

答案 1 :(得分:1)

继续表示在时返回,并且由于 num 从不更改,您将陷入无限循环。

如果要在发生异常时转义循环,请改为使用术语 break

答案 2 :(得分:0)

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