关于python:在try中使用continue,而在while循环中除外

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块中来解决问题。 这样,当引发异常时,会自动避免您要跳过的内容。 现在没有理由continue,将显示下一个提示。

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