Day 216複数の例外を処理する
Pythonコード
1def get_user_input():2 while True:3 try:4 num = int(input('整数を入力してください:'))5 return num6 except ValueError:7 print('整数以外の値が入力されました。再度入力してください。')8 except KeyboardInterrupt:9 print('入力が中断されました。')10 return None11 except Exception as e:12 print(f'予期せぬエラーが発生しました:{e}')13 return None14 15get_user_input()
解説
- 行1〜3: このコードでは、ユーザーから整数を入力してもらうための関数 `get_user_input` を定義しています。入力処理はwhileループで行われ、入力が成功するまで繰り返されます。whileループは、条件がTrueの間繰り返し実行されるループです。
- 行4〜5: `try` ブロック内では、`input` 関数でユーザーから入力を受け付け、それを `int` 関数で整数に変換します。成功した場合は入力値を返します。`input` 関数は、ユーザーから入力を受け付ける関数です。`int` 関数は、文字列を整数に変換する関数です。
- 行6〜7: `except ValueError` ブロックでは、入力された値が整数に変換できない場合(例:文字列など)に発生する `ValueError` 例外を捕捉し、エラーメッセージを表示して再入力を促します。`ValueError` は、値が不正な場合に発生する例外です。
- 行8〜10: `except KeyboardInterrupt` ブロックでは、ユーザーが入力の際にCtrl+Cなどのキーボードショートカットで入力を中断した場合に発生する `KeyboardInterrupt` 例外を捕捉し、メッセージを表示して `None` を返します。`KeyboardInterrupt` は、キーボードで入力を中断した場合に発生する例外です。
- 行11〜12: `except Exception as e` ブロックでは、予期せぬその他の例外が発生した場合にそれを捕捉し、エラーメッセージを表示して `None` を返します。`Exception` は、全ての例外の基底クラスです。
- 行13: 補足: `print()` は画面に文字や値を表示する関数です。
次に試してみよう
- 入力値の範囲を指定して、指定された範囲内でない場合は再入力を求める機能を追加してみましょう。
- 複数の入力値を受け付けて、それらの平均値や最大/最小値を計算する機能を追加してみましょう。
- 入力された値をリストに蓄積し、後でそのリストを利用する機能を追加してみましょう。