この記事で学べる知識:関数の戻り値とデフォルト引数を理解しよう
この記事の練習問題で使用する知識:
レッスン1の知識、比較演算子と論理演算子、条件分岐(if-else文)、条件分岐(elif文)、条件分岐(match文)、繰り返し処理(for文)、繰り返し処理(while文)、繰り返しの制御、エラーメッセージ、例外処理の基礎、関数の定義と使用、戻り値とデフォルト引数、スコープの概念、関数の受け渡し、無名関数
<<前の問題 | 問題集Top |
次の問題>> |
Pythonの「関数の戻り値とデフォルト引数」とは
この章ではPythonにおける「関数の戻り値とデフォルト引数」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。
Pythonでは関数を使うときに「戻り値」と「デフォルト引数」という重要な文法があり、これらの機能を使うことでプログラムの柔軟性と再利用性を高めることができます。
この「戻り値」と「デフォルト引数」について、わかりやすく解説します。
戻り値とは?
関数はただ実行して処理を行うだけでなく、計算結果などのデータを関数の外に戻すことができます。
この戻すデータを「戻り値」と言い、そのデータを他の計算や処理に利用できるようになります。
Pythonでは、return
というキーワードを使って関数から値を返します。関数は1つの値を返すのが一般的ですが、複数の値を返すことも可能です。
戻り値の使用例
次の例では2つの数値を足し合わせ、その結果を戻り値として返す関数を定義しています。
# 2つの数値を足し合わせ、その結果を返す関数 def add_numbers(a, b): return a + b # 計算結果を戻り値として返す # 関数を呼び出し、戻り値を変数resultに代入して表示 result = add_numbers(3, 5) print(f"合計は {result} です。")
このコードでは関数 add_numbers
が2つの引数 a
と b
を受け取り、その合計を計算して戻り値として返しています。
呼び出し元の result
変数にその結果が格納され、print
関数を使って結果が表示されます。
デフォルト引数とは?
「デフォルト引数」とは関数を定義する際にあらかじめ引数にデフォルト値を設定しておく機能です。
デフォルト引数が設定されている場合、その引数を省略して関数を呼び出すことができます。これによりコードの柔軟性が高まり、複雑な関数呼び出しでも簡単に利用できるようになります。
デフォルト引数は関数を定義する際に引数に =
を使って値の設定がされ、呼び出し時にその引数が指定されなかった場合に使用されます。
デフォルト引数の使用例
次の例ではデフォルト引数を使った関数を定義しています。
この関数は名前とメッセージを受け取って挨拶を表示しますが、メッセージが指定されなかった場合は「こんにちは」が使われます。
# デフォルト引数を使った関数 def greet(name, message="こんにちは"): print(f"{message}、{name}さん!") # デフォルトのメッセージを使って関数を呼び出し greet("太郎") # メッセージを指定して関数を呼び出し greet("花子", "おはよう")
このコードでは、最初の呼び出しでは greet("太郎")
のように名前だけを指定していますので、デフォルトのメッセージ「こんにちは」が使用され、「こんにちは、太郎さん!」と表示されます。
二つ目の呼び出しでは、名前とメッセージの両方が指定されていますので、「おはよう、花子さん!」と表示されます。
まとめ
「戻り値」と「デフォルト引数」は、Pythonの関数を効果的に使うための重要な要素です。
戻り値を使えば関数が計算した結果を再利用でき、デフォルト引数を使うことで関数の柔軟性が高まります。
これらを組み合わせて使うことで、より強力で使いやすい関数を作ることが可能になります。ぜひ実際にコードを書いて試してみてください。
練習問題3-2:戻り値とデフォルト引数を使って合計金額を計算しよう
商品価格と数量を入力し、合計金額を計算するプログラムを作成してください。
数量を入力しなかった場合は1個として計算します。プログラムでは戻り値とデフォルト引数を使用します。
この問題の要件
以下の要件に従ってコードを完成させてください。
- 関数
calculate_total(price, quantity)
を定義すること。引数quantity
にはデフォルト値1を設定すること。 - 関数
calculate_total
は、引数で渡されたprice
とquantity
の積(合計金額)を計算し、戻り値として返すこと。 - ユーザーから商品価格と数量を入力してもらうこと。数量が入力されなかった場合はデフォルトの1個として計算すること。
- 入力された価格と数量、もしくはデフォルトの数量を使って合計金額を計算し、画面に表示すること。
ただし、以下のような実行結果となるコードを書くこと。
*****↓↓正解コードの実行結果の例↓↓*****
商品の価格を入力してください(円): 500 商品の数量を入力してください(省略すると1になります): 3 合計金額は 1500 円です。 商品の価格を入力してください(円): 500 商品の数量を入力してください(省略すると1になります): 合計金額は 500 円です。
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)
1.関数calculate_totalの定義
□戻り値の設定
2.ユーザーに商品の価格を入力させ、float型に変換して変数priceに代入
3.ユーザーに商品の数量を入力させ、型に変換して変数quantity_inputに代入
4.if文にてquantity_inputが””であるか判定
□真の場合、変数totalにcalculate_totalの戻り値を代入
5.else文
□変数quantityに、int型に変換した商品の数量を代入
□変数totalにcalculate_totalの戻り値を代入
6.合計金額を出力
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# 合計金額を計算する関数 # price: 商品の価格 # quantity: 商品の数量(デフォルトは1) # 戻り値として、計算された合計金額を返す def calculate_total(price, quantity=1): # 合計金額を計算して戻り値として返す return price * quantity # メイン部分 # ユーザーに商品価格と数量を入力してもらう """【穴埋め問題1】 ここに商品の価格をユーザーに入力してもらい、float型に変換するコードを書いてください。 """ quantity_input = input("商品の数量を入力してください(省略すると1になります): ") # 数量が入力されなかった場合はデフォルト値の1を使用 if quantity_input == "": """【穴埋め問題2】 ここにcalculate_total関数を呼び出して合計金額を計算するコードを書いてください。 """ else: """ 【穴埋め問題3】ここにユーザーの入力を整数型に変換し、quantityに代入するコードを書いてください。 """ """ 【穴埋め問題4】ここにcalculate_total関数を呼び出して、合計金額を計算するコードを書いてください。 """ # 結果を表示 print(f"合計金額は {total} 円です。")
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例と解説
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
# 合計金額を計算する関数 # price: 商品の価格 # quantity: 商品の数量(デフォルトは1) # 戻り値として、計算された合計金額を返す def calculate_total(price, quantity=1): # 合計金額を計算して戻り値として返す return price * quantity # メイン部分 # ユーザーに商品価格と数量を入力してもらう price = float(input("商品の価格を入力してください(円): ")) quantity_input = input("商品の数量を入力してください(省略すると1になります): ") # 数量が入力されなかった場合はデフォルト値の1を使用 if quantity_input == "": total = calculate_total(price) else: # 入力された数量を使って合計金額を計算 quantity = int(quantity_input) total = calculate_total(price, quantity) # 結果を表示 print(f"合計金額は {total} 円です。")
正解コードの解説
このコードでは商品価格と数量をもとに合計金額を計算するシンプルなプログラムを作成しています。
コード全体を順に見ていきましょう。
合計金額を計算する関数 calculate_total
def calculate_total(price, quantity=1): return price * quantity
まず合計金額を計算するための関数 calculate_total
を定義しています。
この関数には2つの引数 price
と quantity
がありますが、quantity
にはデフォルト値が設定されており、省略された場合には自動的に 1
が使用されます。
関数の中ではprice
と quantity
を掛け算して、その結果を戻り値として返しています。
商品の価格と数量の入力
price = float(input("商品の価格を入力してください(円): ")) quantity_input = input("商品の数量を入力してください(省略すると1になります): ")
ここではユーザーに商品の価格と数量を入力してもらいます。
input()
関数でユーザーの入力を受け取り、それを price
には float
型(小数点が含まれる数値)に変換して代入します。
次に数量を input()
で受け取りますが、こちらは数値として扱う前に、ユーザーが何も入力しなかった場合に対応する処理がこの先のコードで書かれています。
入力がない場合のデフォルト処理
if quantity_input == "": total = calculate_total(price) else: quantity = int(quantity_input) total = calculate_total(price, quantity)
quantity_input
が空の場合、つまりユーザーが数量を入力しなかったとき、関数 calculate_total
を呼び出します。
このとき、デフォルト引数で設定した 1
が自動的に使用されます。一方、数量が入力されていた場合は、その値を整数 (int
) に変換して calculate_total
関数を呼び出します。
結果の表示
print(f"合計金額は {total} 円です。")
最後に計算された合計金額を画面に表示します。
ここでは、f文字列
を使って、計算結果 total
を文章の中に埋め込んでいます。
<<前の問題 |
問題集Top |
次の問題>> |
この記事への質問・コメント
この記事を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。