全3070文字
PR

プログラミング言語のPythonは広く使われるようになり、始めてみたい人も多いはずだ。しかし、Pythonには初心者がつまずきやすいポイントがいくつかある。そうしたポイントを、新人プログラマーAさんの具体的な悩みを解決する形で解説していこう。

(イラスト:森マサコ)
(イラスト:森マサコ)
[画像のクリックで拡大表示]
見たことないエラーを条件分岐で防ごうとしたが…

 データ型や繰り返し処理、ロギングの方法まで、Pythonについてはひと通り学んできた。書いたコードがエラーになることはまだまだ多いけど…。

 今も、エラーへの対処方法で悩んでいる。割り算をする関数のプログラムを作ったら、エラーが発生してしまった。それが図1のコードだ。

図1 エラーが発生した割り算のプログラム
図1 エラーが発生した割り算のプログラム
[画像のクリックで拡大表示]

 図1の1~3行目のcalc関数は、引数に設定されたaの値をbの値で割り、その結果を戻り値として返す関数だ。

 5~8行目では、calc関数に引数として渡す値を指定して処理を行い、その戻り値を変数zに格納して表示しているよ。

 このプログラムを実行すると「ZeroDivisionError」というエラーが発生した。見たことがないエラーだったけど、何とか動くように図2のように修正してみた。

図2 エラーが出ないように改良しようとしたプログラム
図2 エラーが出ないように改良しようとしたプログラム
[画像のクリックで拡大表示]

 図2の3~4行目が、追加したコードだ。「ZeroDivisionError」の意味を調べてみると「0で割り算等が行われた場合に発生するエラー」とのこと。つまり、エラーの原因は「0で割り算をしていること」だ。だから、if文による条件分岐を使って、cが「ZeroDivisionError」というエラーになった場合は、print関数で「0以外で割り算してください。」というメッセージを表示するようにしてみたんだ。

 でも、このプログラムも実行結果はエラーになってしまった。エラーの原因がわかっているんだから、どうにかして事前に防ぎたい!