2016-11-12 103 views
0

我想做一个简单的程序,当我输入半径时将计算一个圆的面积。当我输入一个数字的时候,但是当我输入其他的东西时,我想让它说“那不是数字”,让我再试一次,而不是给我一个错误。ValueError异常不能在python中工作

我不明白为什么这不起作用。

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!" 

回答

1

当您不输入数字时,错误将由input本身引发,但不在您的try/except的范围内。你可以简单地丢弃is_number功能完全是多余的比较,把print声明中except块:

try: 
    radius = input("Enter circle radius:") 
except (ValueError, NameError): 
    print "That's not a number!" 
get_area(radius) 
0

radius仍然是一个字符串,

更换

get_area(radius) 

get_area(float(radius)) 

你也必须更换inputraw_input因为你使用Python 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