【独学】Python (パイソン)プログラミング⑫

プログラミングイメージ20 IT・プログラミング
この記事は約3分で読めます。

こんばんは。

前回は、変数のスコープ。
ローカール変数や、グローバル変数を勉強しましたね。

今回は、[例外処理]についてです。

 

教科書で説明されている例を見てみます。

input関数を使用したプログラムで、ユーザーの入力を待っている時、
プログラム側は、どんな値が入力されるかを制御できません。
ユーザーからの入力は、そのままプログラムに渡されます。
これが、エラーにつながる場合があります。

 

例えば、ユーザーから2つの数値を入力してもらい、
最初に入力された数値を、次に入力された数値で割って、
結果を出力するプログラムの場合、2番目に入力された数値が、
”0”だった時は、ゼロによる割り算になってしまうので、
エラーが発生してしまいます。

a=input("1番目の値を入力して下さい。")
b=input("2番目の値を入力して下さい。")
a=int(a)
b=int(b)
print(a/b)

上記を実行して、2番目の値としてゼロを入力すると、
ZeroDivisionError: division by zero というエラーが表示されます。
このようなエラーを回避する方法として、例外処理を行う事が必要になります。

 

例外処理はエラーの条件をテストして、実際にエラーの発生条件が起きた時に、
例外として捕らえて、その後にどう進めるかを判断します。

キーワード [try]と[except]は、例外処理に使用します。
このキーワードを含む複合文を使用して、例外を捕らえます。

 

下記は、上記のキーワードを使用して修正したプログラムで、
2番目の値にゼロを入力しても、プログラムは中断しません。

a=input("1番目の値を入力して下さい。") 
b=input("2番目の値を入力して下さい。")
a=int(a) 
b=int(b)
try:
    print(a/b)
except ZeroDivisionError:
    print("2番目の値は”0”以外にして下さいね💛")

 

パイソンの各、例外はオブジェクトなので、プログラムで使用出来ます。
組み込み例外の一覧は、下記のURLで見る事が出来ます。
https://docs.python.org/ja/3/library/exceptions.html

では、ユーザーの入力が数値以外の文字だった場合は、どうでしょうか?
「 m 」と入力してみると、

ValueError: invalid literal for int() with base 10: ‘m’

という、エラーが発生して中断してしまいます。

この例外を防ぐには、try節内に入力のコードを移動し、
except文に例外処理を追加します。

カッコを追加してカンマで区切ることで、2つの例外を捕らえます。

try:
    a=input("1番目の値を入力してください")
    b=input("2番目の値を入力してください")
    a=int(a)
    b=int(b)
    print(a/b)
except(ZeroDivisionError,ValueError):
   print("無効な入力です。数値を入力してください。2番目の値はゼロ以外にして下さい")

いかがでしたか。
マスター出来ましたでしょうか。

次回は、第4章のまとめです。
私の教科書は、

 

では、では。
by geese.(ギース)
↓オヤジ、人生の例外対策を教えてくれ。
にほんブログ村 オヤジ日記ブログへ
にほんブログ村

にほんブログ村 地域生活(街) 東北ブログ 山形県情報へ
にほんブログ村

にほんブログ村 PC家電ブログ デジモノ・ガジェットへ
にほんブログ村

コメント

タイトルとURLをコピーしました