2016-05-25 9 views
-4

try:except:をこのプログラムに含めることで、文字列例外を捕捉しようとしましたが、実装方法を理解することができませんでした。例外処理にtry:except:を含めるにはどうすればよいですか?try:とexcept:を例外処理に含めるにはどうすればいいですか?

#!/usr/bin/python2.7 

h = float(raw_input('Enter Hours: ')) 
r = float(raw_input('Enter Rate: ')) 
if h > 40 : 
    p = h * r + (h - 40) * r * 0.5 
else : 
    p = h * r 
print 'Pay:', p 
+1

[Pythonのドキュメントでエラー処理](httpsのためのテストので、無効になりますので、無効なエントリであればいくつかは0を返すことを好むかもしれません.python.org/3/tutorial/errors.html) – Holloway

答えて

0

あなたは今、あなたは有効な応答を求めるために必要なペア以外

def num(s): 
    try: 
     return float(s) 
    except : 
     return None 
h = num(raw_input('Enter Hours: ')) 

を試みを使用する必要があります。例えば。

h = None 
p = None 
while (h is None): 
    h = num(raw_input('Enter Hours: ')) 
while (p is None): 
    p = num(raw_input('Enter Price: ')) 

これは、残りの処理をどのように処理するかによって異なります。 //ドキュメント:それは0価格または0時間も> 0

def num(s): 
    try: 
     return float(s) 
    except : 
     return 0.0 
h = num(raw_input('Enter Hours: ')) 

h = 0.0 
p = 0.0 
while (h <= 0.0): 
    h = num(raw_input('Enter Hours: ')) 
while (p <= 0.0): 
    p = num(raw_input('Enter Price: ')) 
+1

「None」を返すだけで問題が他の場所にプッシュされました。 – Holloway

+1

@HollowayあなたがNoneを返すと、エラー – sabbahillel

+1

を正確に処理するために、テスト(またはしばらく)を行う必要があります。とにかく戻り値のチェックを行うつもりなら、問題が発生した場所で問題を処理している可能性もあります。 – Holloway

1
#!/usr/bin/python2.7 

def calc_pay(h, r) : 
    if h <= 0 or r <= 0 : 
     return None 
    elif h > 40 : 
     return (h * r + (h - 40) * r * 0.5) 
    else : 
     return (h * r) 

try : 
    h = float(raw_input('Enter Hours: ')) 
    r = float(raw_input('Enter Rate: ')) 
    p = calc_pay(h, r) 
    print 'Pay:', p 
except : 
    print "Enter Numeric Data" 
+0

'raw_input'はエラーメッセージをトリガーする場所です(例えば、プロンプトでテキスト文字列を入力した場合)、計算関数は' try'節に含まれていませんでした。 – noobninja

関連する問題