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