2016-11-12 100 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