2016-11-12 4 views
0

半径を入力すると円の面積を計算する簡単なプログラムを作成しようとしています。数字を入力すると機能しますが、何か他のものを入力すると "それは数字ではありません"と言いたいので、エラーを出す代わりにもう一度試してみましょう。PythonでValueError例外が機能しない

なぜこれが機能していないのかわかりません。

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の範囲には含まれません。

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

radius

はまた、あなたはPythonの2

を使用しているので、 raw_inputinputを交換する必要が

get_area(float(radius)) 

get_area(radius) 

を置き換える、まだ文字列です。

0
in= 0 
while True: 
    try: 
    in= int(input("Enter something: "))  
    except ValueError: 
    print("Not an integer!") 
    continue 
    else: 
    print("Yes an integer!") 
    break 
:あなたは、単に非常に冗長であり、 exceptブロックで print文を入れて完全に is_number機能を破棄することができます
関連する問題