ValueError异常在python中不起作用

时间:2016-11-12 17:57:21

标签: python error-handling

我尝试制作一个简单的程序,在输入半径时计算圆的面积。当我输入一个数字时,它可以正常工作,但是当我输入其他内容时,我希望它能说“#34;那不是数字"让我再试一次,而不是给我一个错误。

我无法弄清楚为什么这不起作用。

from math import pi

def get_area(r):
    area = pi * (r**2)
    print "A= %d" % area

def is_number(number):
    try:
        float(number)
        return True
    except ValueError:
        return False

loop = True
while loop == True:
    radius = input("Enter circle radius:")
    if is_number(radius) == True:
        get_area(radius)
        loop = False
    else:
        print "That's not a number!"

3 个答案:

答案 0 :(得分:1)

如果您不输入数字,则raw_input本身会引发错误,这不属于您input的范围。您可以完全放弃try/except函数,这完全是多余的,并将is_number语句放在print块中:

except

答案 1 :(得分:0)

i.itemName as i.itemName for i in fl.combo_ItemList.itemList. 仍然是一个字符串,

替换

radius

 get_area(radius)

由于您使用的是Python 2,因此您还必须将get_area(float(radius)) 替换为input

答案 2 :(得分:0)

in= 0
while True:
  try:
     in= int(input("Enter something: "))       
  except ValueError:
     print("Not an integer!")
     continue
  else:
     print("Yes an integer!")
     break