
はじめてのPython | 第21回
1. はじめに
この回では、エラー処理の基本を学びます。前回は、ファイルに書き込む方法を確認しました。
Pythonを書いていると、入力値が想定と違ったり、変換に失敗したりしてエラーが出ることがあります。エラーが起きたときの対応方法を知っておくと、プログラムを途中で止めずに、分かりやすく処理できます。
2. この回で学ぶこと
- エラーとは何か
- 例外とは何か
tryexcept- 入力値の変換エラーに対応する方法
3. 概念の説明
プログラムを実行したときに問題が起きると、エラーが表示されます。その中でも、実行中に発生するエラーは例外と呼ばれます。
たとえば、文字列を数値に変換するときに、数字ではない文字を渡すと例外が発生します。
number = int("abc")このコードでは、"abc" を整数に変換できないため、エラーになります。
エラーが起きそうな処理を安全に扱いたいときは、try と except を使います。
try:
number = int("abc")
print(number)
except ValueError:
print("数字を入力してください")try: の中には、エラーが起きる可能性がある処理を書きます。except ValueError: の中には、そのエラーが起きたときに実行したい処理を書きます。
この例では、int("abc") で ValueError が発生したときに、プログラムがそのまま止まる代わりに 数字を入力してください と表示します。
入力値を int() で数値に変換するときも、同じ考え方を使えます。
text = input("数字を入力してください: ")
try:
number = int(text)
print(number)
except ValueError:
print("数字ではありません")このコードでは、入力された文字が整数に変換できるかを確認しています。数値ならそのまま使い、数値でなければ別のメッセージを表示できます。
4. サンプルコード
次のコードを見てください。
text = input("数字を入力してください: ")
try:
number = int(text)
print("2倍した値:", number * 2)
except ValueError:
print("数字を入力してください")このコードでは、入力された値を整数に変換して、2倍した結果を表示しています。数字ではない入力だった場合は、エラーメッセージではなく、自分で用意した説明を表示します。
5. 実行手順
まず、error_handling.py というファイルを作ります。
touch error_handling.pyerror_handling.py をエディターで開き、次のコードを書いて保存します。
text = input("数字を入力してください: ")
try:
number = int(text)
print("2倍した値:", number * 2)
except ValueError:
print("数字を入力してください")保存したら、ターミナルで次のコマンドを実行します。
python3 error_handling.pyたとえば 12 と入力すると、結果は次のようになります。
数字を入力してください: 12
2倍した値: 24一方で abc と入力すると、結果は次のようになります。
数字を入力してください: abc
数字を入力してください6. コードの読み方
text = input("数字を入力してください: ")は、キーボードから入力された内容を文字列として受け取っています。try:の中には、int(text)で整数に変換する処理と、その結果を使う処理を書いています。- ここは、入力内容によってエラーが起きる可能性がある部分です。
number = int(text)は、textを整数に変換しています。- もし
textが"12"なら成功しますが、"abc"のような文字ならValueErrorが発生します。 except ValueError:は、そのValueErrorが起きたときに実行される部分です。- この例では、
print("数字を入力してください")を実行しています。 - そのため、プログラムがその場で止まる代わりに、入力ミスを説明するメッセージを出せます。
7. 初学者がつまずきやすい点
- エラーの中でも、実行中のものを例外と呼ぶ
tryにはエラーが起きる可能性のある処理を書くexceptには、エラーが起きたときの処理を書くint()の変換失敗ではValueErrorが出る- 入力値を数値に変換するときは、エラー処理が必要になることがある
特に、try と except はセットで考える必要があります。try だけを書いても、エラーへの対応にはなりません。
また、except ValueError: と書くことで、どの種類のエラーに対応するのかを明示できます。
8. よくあるエラー
1つ目は、except の種類が合っていない場合です。
text = input("数字を入力してください: ")
try:
number = int(text)
print(number)
except TypeError:
print("エラーです")このコードでは、int(text) で起きるのは TypeError ではなく ValueError です。そのため、文字列 abc を入力すると正しく対応できません。
2つ目は、try のあとにインデントしていない場合です。
try:
number = int("10")
except ValueError:
print("エラーです")このときは、次のようなエラーになります。
IndentationError: expected an indented blocktry: の中に書く処理は、インデントが必要です。
3つ目は、エラー処理を書かずに変換してしまう場合です。
text = input("数字を入力してください: ")
number = int(text)
print(number)この場合、数字以外を入力すると、次のようなエラーでプログラムが止まります。
ValueError: invalid literal for int() with base 10: 'abc'入力値が不確かな場合は、try と except で対応する形を考える必要があります。
9. 練習用コード
次のコードを practice_error_handling.py として保存して実行してください。
text = input("年齢を入力してください: ")
try:
age = int(text)
print("入力された年齢:", age)
except ValueError:
print("年齢は数字で入力してください")数字を入力した場合と、文字を入力した場合の両方を試してください。
余裕があれば、age + 5 を表示して、5年後の年齢も出してみてください。
10. この回で理解しておくこと
- エラーはプログラムで問題が起きたことを示す
- 実行中のエラーは例外と呼ばれる
tryにはエラーが起きる可能性のある処理を書くexceptにはエラーが起きたときの処理を書くint()の変換失敗にはValueErrorで対応できる
11. まとめ
今回は、エラー処理の基本を確認しました。try と except を使うと、入力ミスなどで例外が起きても、分かりやすい処理に切り替えられます。
初学者の段階では、まず int(input(...)) の変換で ValueError が起きることと、それを try と except で扱えることを理解してください。
12. 次回予告
次回は、総合演習としてメモを保存するプログラムを作ります。入力、リスト、ファイル書き込み、関数を組み合わせる流れを確認します。
復習してみよう
復習したい方は、こちらもあわせてご覧ください。










