こんにちわ!この記事はPythonの初学者のための内容となっております。
前回は、基本的な例外処理について学習しました。
前回の記事
今回の内容も例外処理についてですが、前回よりもより深い内容となっています。
一応初めての上級内容となっているので、若干難しいかもしれません。
それではみていきましょう!
コンテンツ
プログラミングスクールに関しては下の記事で詳しく記述しています。
こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。
Let’s practice a little!!
例外処理のおさらい
早速例外処理の記述例をみていこう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
def counter(): count = 0 while True: try: count += int(input("数字を入力してください:")) except ValueError: print("終了しました。") break return count print(counter()) """ 数字を入力してください:1 数字を入力してください:2 数字を入力してください:345 数字を入力してください:q 終了しました。 348 """ |
わからないよ。って方は前回の記事や、ループ文についての記事を参照してください。
Pythonで学ぶ初学者のための学習&問題(if文編)
過去の記事
今回のコードで新しく出てきた関数は、「input」文ですね。これを用いることで、キーボードから入力したものをプログラムで実行できます。実際に上記のコードを実行してみると面白いかもしれませんね。
次に例外の種類を見ていくよ!
例外の種類について
プログラミングを行うにあたってエラーを吐かれたり、例外を見てきたと思います。
それらを少しまとめてみました。
例外の種類 | 意味 |
IndexError | 配列の添え字のエラー |
TypeError | 型のエラー。例)”one” + 1 |
ZeroDivisionError | 0で割ることによるエラー |
KeyError | 辞書にないkeyを使うことによるエラー |
NameError | 存在しない変数を使うことによるエラー |
RuntimeError | 実行時間のエラー |
SyntaxError | 構文のエラー。実行ができない。 |
※例外の種類に対応する記事のリンクを貼っています。
たくさんあって難しい。。。
「RuntimeError」は、無限ループが起き、プログラムが終了しないときなどに便利です。
また、「SyntaxError」はPythonならではのインデントエラーや、コロンなどに間違いが存在するときなどで出てきます。いずれもよく見るエラー構文なので覚えておくといいですよ!
Let’s practice more!!
「else」文について
例外処理における「else」文は、エラーが起こらなかった場合に実行される構文です。
早速例を見ていきましょう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def Else(a, b): try: print("結果は" + str(a / b) + "です。") except Exception: print("エラーが起こりました。") else: print("プログラムを終了します。") Else(9, 3) #結果は3.0です。 #プログラムを終了します。 Else(2, 0) #エラーが起こりました。 |
エラーが起こっていない、前半の命令のみで「else」文が実行されているのがわかりますね。
続いて、「finally」文を見ていきましょう!
「finally」文について
例外処理における「finally」文は、エラーが起こっても起こらなくても必ず実行するときに用いる構文です。例えば、必ず出力しておきたい文字がある場合や、ファイルを閉じてからプログラムを終了したいときなどに使われます。例を見ていきましょう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
def Finally(a, b): try: print("結果は" + str(a / b) + "です。") except ZeroDivisionError: print("0で割ることはできません。") finally: print("プログラムを終了します。") Finally(9, 3) #結果は3.0です。 #プログラムを終了します。 Finally(2, 0) #0で割ることはできません。 #プログラムを終了します。 |
実行結果を見ていただくとわかりやすいのですが、「finally」文は必ず実行されているのがわかりますね!
「try」「except」「else」「finally」などたくさんの構文があることがわかりました。また、エラー構文も様々なものがありますので、さらに深く知りたい、あるいは、もっとたくさんの種類を扱ってみたいなどと感じるすんばらしいお方は公式ページなどで調べてみるのもいいですね。
Today’s final practice!!
まとめ
今回の記事では、例外処理の「else」文「finally」文を扱いました。
様々な構文とエラー内容を使い分けれるようになると、プログラムを組むうえでの人的ミスも減っていいと思います。サンプルコードが長く、若干難しかったかもしれませんが、これからも頑張っていきましょう!
- 基本は、「try – except」
- 通常に終了したときに実行するのは、「else」
- 必ず実行されるのは、「finally」
これさえ押さえれば何とかなりそう!
本日の理解度調査
今日の最後に理解度調査をします!!
どうすれば正しくなるのか考えてみてね!!
Q. 「Search_Key_else」関数を出力結果と一致するように定義せよ。
ただし、エラー構文は「KeyError」を用いる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
d = {chr(i + 64) : i for i in range(1, 6)} print(d) #{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5} def Search_Key_else(char): ???: print(char + "に対応するのは" + str(d[char]) + "です。") ???: print('Keyが存在しません。') ???: print("エラーはありませんでした。") ???: print("終了しました。") Search_Key_else("A") #Aに対応するのは1です。 #エラーはありませんでした。 #終了しました。 Search_Key_else("G") #Keyが存在しません。 #終了しました。 |
正解は。。。
1 2 3 4 5 6 7 8 9 |
def Search_Key_else(char): try: print(char + "に対応するのは" + str(d[char]) + "です。") except KeyError: print('Keyが存在しません。') else: print("エラーはありませんでした。") finally: print("終了しました。") |
わかったかな??正解出来たら今回の項目は完璧だね!!