Day 52独自に例外を送出するraise
Pythonコード
1def calculate_average(numbers):2 if len(numbers) == 0:3 raise ValueError("数値のリストは空にできません")4 return sum(numbers) / len(numbers)5 6try:7 numbers = [10, 20, 30]8 average = calculate_average(numbers)9 print("平均:", average)10except ValueError as e:11 print("エラー:", e)12 13try:14 numbers = []15 average = calculate_average(numbers)16 print("平均:", average)17except ValueError as e:18 print("エラー:", e)19 20def get_user_input():21 while True:22 try:23 num = int(input("数値を入力してください: "))24 return num25 except ValueError:26 print("数値以外の入力はできません。再入力してください。")27 28user_num = get_user_input()29print("入力された数値:", user_num)
解説
- 行1〜4: calculate_average という関数を定義しています。この関数は、数値のリストを受け取り、その平均を計算して返します。ただし、リストが空の場合には ValueError という例外を送出します。len() は要素数(長さ)を返す関数です。
- 行6〜9: calculate_average 関数を呼び出しています。数値のリスト [10, 20, 30] を渡しています。平均が計算され、print で出力されます。print() は画面に文字や値を表示する関数です。
- 行10〜13: 空のリストを calculate_average 関数に渡しています。関数内で ValueError が送出され、ここで例外が捕捉されます。エラーメッセージが print で出力されます。
- 行14〜19: get_user_input という関数を定義しています。この関数は、ユーザーに数値を入力してもらうまで繰り返します。入力された値が数値でない場合には、ValueError が送出され、再入力を求めます。
- 行20〜22: get_user_input 関数を呼び出しています。入力された数値が print で出力されます。
- 行5: sum() は数値の合計を計算する関数です。
次に試してみよう
- 空のリストを渡すと、calculate_average 関数は ValueError を送出します。空でないリストを渡して、平均が正しく計算されることを確認してみましょう。
- get_user_input 関数で、入力された値が数値でない場合には、エラーメッセージを出力します。入力された値が数値でない場合に、異なるエラーメッセージを出力するように修正してみましょう。
- calculate_average 関数で、リスト内の数値がすべて同じ場合には、平均も同じ数値になります。すべて同じ数値のリストを渡して、平均が正しく計算されることを確認してみましょう。