Python コーディング問題 第21回『デフォルト引数とキーワード引数・可変長引数 』

プログラミング上達のコツは学習初期段階でとにかく手を動かしてコーディングすることです。
本シリーズでは Python の初学者に向けたコーディング問題を出題します。
今回は引数(デフォルト引数とキーワード引数・可変長引数)について学習します。コーディング指示に従ってコーディングしてみましょう!

目次

学習の進め方-

  1. プログラム説明および目的を確認し、どのようなプログラムで何を学ぶかイメージしましょう。
  2. コーディング指示に従ってコーディングをします。
    もし分からなければ、コード例を確認しても良いです。
  3. 自分の出力結果と出力結果例を比較してみましょう。
  4. コード例を確認し、自分のコードと比較してみましょう。
    コード例は「あくまでも例」なので完全に一致する必要はありません。
  5. 最終的にはコーディング指示だけでコーディングできるよう、繰り返し練習しましょう。

Python コーディング問題 1:デフォルト引数とキーワード引数を使用した給与計算

プログラム説明

社員の給与を計算するプログラムを作成します。基本給、ボーナスに加え、オプションで交通費を加算して総給与を計算します。

目的

関数の定義と呼び出し、デフォルト引数とキーワード引数の使用を学びます。

コーディング指示

新しいPythonファイル salary_calculator21_1.py を作成する

  1. 任意のエディタを開き、新しいファイルを作成します。
  2. ファイル名を salary_calculator21_1.py として保存します。

calculate_salary という関数を作成する

  1. 関数名は calculate_salary とします。
  2. 引数として base_salary と bonus を必須引数として受け取ります。
  3. 交通費 transportation_allowance はデフォルト引数として受け取り、省略可能にします(デフォルト値は 10000 円とします)。
    ヒント:
    input関数で入力を求めた場合、何も入れずにEnterキーが押されると変数には""(空文字列)が格納されます。
    また、空白文字(スペースやタブ)を入れた状態でEnterキーが押された場合には入力された空白文字が変数に格納されます。
    Pythonでは値を真偽値として扱うとき、空文字列や0、空のリスト・辞書などがFalseとなり、それ以外の値はTrueとなります。
  4. 関数内で基本給、ボーナス、交通費を合計して総給与を計算し、その結果を返します。

メインプログラムを作成する

  1. ユーザーに基本給を入力させ、その値を整数に変換して base_salary に格納します。
  2. ユーザーにボーナスを入力させ、その値を整数に変換して bonus に格納します。
  3. ユーザーに交通費を入力させ、入力がない場合にはデフォルト値を使用するようにします。
  4. calculate_salary 関数を呼び出して総給与を計算し、表示します。

出力結果例

タップして出力結果例を表示
Python salary_calculator.py 実行結果1

————————————————————————————————-

Python salary_calculator.py 実行結果2

Python コード例

タップしてコード例を表示
# 基本給、ボーナス、交通費を受け取り、総給与を計算する関数
def calculate_salary(base_salary, bonus, transportation_allowance=10000):
    # 総給与を計算して返す
    return base_salary + bonus + transportation_allowance

# メインプログラム
# 基本給をユーザーから入力して整数に変換
base_salary = int(input("基本給を入力してください: "))
# ボーナスをユーザーから入力して整数に変換
bonus = int(input("ボーナスを入力してください: "))
# 交通費をユーザーから入力、入力がない場合もある
transportation_allowance = input("交通費を入力してください (省略可能): ")

# 交通費が入力されなかった場合の処理
if transportation_allowance:
    # 交通費が入力されていたら、それを整数に変換して関数を呼び出す
    total_salary = calculate_salary(base_salary, bonus, transportation_allowance=int(transportation_allowance))
else:
    # 交通費が入力されなかった場合、デフォルトの交通費を使用して関数を呼び出す
    total_salary = calculate_salary(base_salary, bonus)

# 総給与を表示
print("総給与は", total_salary, "円です")

Python コーディング問題 2:デフォルト引数とキーワード引数を使用したプロフィール作成

プログラム説明

ユーザーのプロフィールを作成するプログラムを作成します。名前と年齢に加え、オプションで趣味と住んでいる都市を設定します。

目的

関数の定義と呼び出し、デフォルト引数とキーワード引数の使用を学びます。

コーディング指示

新しいPythonファイル profile_creator21_2.py を作成する

  1. 任意のエディタを開き、新しいファイルを作成します。
  2. ファイル名を profile_creator21_2.py として保存します。

create_profile という関数を作成する

  1. 関数名は create_profile とします。
  2. 引数として name と age を必須引数として受け取ります。
  3. 趣味 hobby と都市 city はデフォルト引数として受け取り、省略可能にします(趣味のデフォルト値は "なし", 都市のデフォルト値は "不明" とします)。
  4. 関数内で名前、年齢、趣味、都市の情報をフォーマットして文字列として返します。

メインプログラムを作成する

  1. ユーザーに名前を入力させ、その値を name に格納します。
  2. ユーザーに年齢を入力させ、その値を整数に変換して age に格納します。
  3. ユーザーに趣味を入力させ、入力がない場合にはデフォルト値を使用するようにします。
  4. ユーザーに住んでいる都市を入力させ、入力がない場合にはデフォルト値を使用するようにします。
  5. create_profile 関数を呼び出してプロフィールを作成し、表示します。

出力結果例

タップして出力結果例を表示
Python profile_creator.py実行結果1

————————————————————————————————-

Python profile_creator.py実行結果2

Python コード例

タップしてコード例を表示
# 名前、年齢、趣味、都市を受け取り、プロフィールを作成する関数
def create_profile(name, age, hobby="なし", city="不明"):
    # プロフィールをフォーマットして返す
    return f"名前: {name}, 年齢: {age}, 趣味: {hobby}, 都市: {city}"

# メインプログラム
# 名前をユーザーから入力
name = input("名前を入力してください: ")
# 年齢をユーザーから入力して整数に変換
age = int(input("年齢を入力してください: "))
# 趣味をユーザーから入力、入力がない場合もある
hobby = input("趣味を入力してください (省略可能): ")
# 住んでいる都市をユーザーから入力、入力がない場合もある
city = input("住んでいる都市を入力してください (省略可能): ")

# 趣味と都市が入力されなかった場合の処理
if hobby and city:
    # 趣味と都市の両方が入力されていたら、それらを使って関数を呼び出す
    profile = create_profile(name, age, hobby=hobby, city=city)
elif hobby:
    # 趣味だけが入力されていたら、それを使って関数を呼び出す
    profile = create_profile(name, age, hobby=hobby)
elif city:
    # 都市だけが入力されていたら、それを使って関数を呼び出す
    profile = create_profile(name, age, city=city)
else:
    # 趣味と都市が入力されなかった場合、デフォルト値を使って関数を呼び出す
    profile = create_profile(name, age)

# プロフィールを表示
print("プロフィール:", profile)

Python コーディング問題 3:可変長引数を用いた合計計算

プログラム説明

このプログラムは、可変長引数を用いて任意の数の数値を受け取り、その合計を計算するものです。関数を使用して数値の合計を求めます。

目的

可変長引数の使用方法を学び、複数の引数を処理する関数の定義と呼び出しを学びます。

コーディング指示

新しいPythonファイル sum_numbers21_3.py を作成する

  1. 任意のエディタを開き、新しいファイルを作成します。
  2. ファイル名を sum_numbers21_3.py として保存します。

sum_all という関数を作成する

  1. sum_all という関数を定義し、引数として任意の数の数値を受け取ります。
    ヒント:
    関数定義で *仮引数 とすると複数の値をまとめて受け取れます。
    使用例)
    def sample(*nums):
      pass
  2. 関数内で受け取った数値の合計を計算し、その結果を返します。
  3. この関数では*argsを使用します。

メインプログラムを作成する

  1. ユーザーに数値をカンマ区切りで入力させ、それをリストに変換します。
    ヒント:
    ・input().split() で、入力を区切ってリストを作れます。
    この時点で受けとった値は文字列です。
    ・map() は第一引数に処理(関数や型コンストラクタ)、第二引数にイテラブルを渡すと、要素を順番に処理する仕組みを返します。
    ここで第一引数にintを使用するとリストの要素を1つ1つint型(整数)に変換する仕組み(mapオブジェクト)を作ることができます。
    ・map() の結果はそのままでは使いにくい「mapオブジェクト」なので、list() に変換します。
    使用例)
    nums = list(map(int, input("数値をカンマ区切りで入力してください: ").split(',')))
  2. sum_all 関数を呼び出し、数値の合計を計算します。
    ヒント:
    関数呼び出しで *実引数 とするとコレクションを展開し、要素を 1 つずつ引数として渡せます。
    使用例)
    print(sample(*nums))
  3. 計算結果を表示します。

出力結果例

タップして出力結果例を表示
Python sum_numbers.py 実行結果

Python コード例

タップしてコード例を表示
# 任意の数の数値の合計を計算する関数を定義
def sum_all(*args):
    # 合計を計算
    total = sum(args)
    # 合計を返す
    return total

# メインプログラム
# ユーザーに数値をカンマ区切りで入力させる
numbers = list(map(int, input("数値をカンマ区切りで入力してください: ").split(',')))

# 関数を呼び出して数値の合計を計算
total_sum = sum_all(*numbers)

# 合計を表示
print("合計:", total_sum)

Python コーディング問題 4:可変長引数を用いたプロフィール作成

プログラム説明

このプログラムは、可変長引数を用いて任意の数のユーザープロフィール情報を受け取り、その情報を表示するものです。関数を使用してユーザープロフィールを作成します。

目的

可変長引数の使用方法を学び、任意の数のキーワード引数を処理する関数の定義と呼び出しを学びます。

コーディング指示

新しいPythonファイル profile_creator21_4.py を作成する

  1. 任意のエディタを開き、新しいファイルを作成します。
  2. ファイル名を profile_creator21_4.py として保存します。

create_profile という関数を作成する

  1. create_profile という関数を定義し、任意の数のキーワード引数を受け取ります。
  2. 関数内で受け取ったキーワード引数を用いてプロフィールを作成し、その結果を表示します。
  3. この関数では**kwargsを使用します。

メインプログラムを作成する

  1. ユーザーに名前、年齢、趣味、都市を順に入力させます。
  2. create_profile 関数を呼び出し、ユーザープロフィールを表示します。

出力結果例

タップして出力結果例を表示
Python 可変調を用いた profile_creator.py実行結果

Python コード例

タップしてコード例を表示
# 任意の数のユーザープロフィール情報を表示する関数を定義
def create_profile(**kwargs):
    # プロフィールを表示
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# メインプログラム
# ユーザーにプロフィール情報を入力させる
name = input("名前を入力してください: ")
age = input("年齢を入力してください: ")
hobby = input("趣味を入力してください: ")
city = input("住んでいる都市を入力してください: ")

# 関数を呼び出してプロフィールを表示
create_profile(名前=name, 年齢=age, 趣味=hobby, 都市=city)

プログラミングは実際に手を動かしながら理解を深めることが大切です。次回も引き続き、コーディング問題を解きながらスキルを磨いていきましょう!(参考:Python公式日本語ドキュメント)

(Visited 774 times, 1 visits today)

記事をご覧いただきご質問がある場合は、以下のLINEからご連絡ください。

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

職業訓練校 エヌ・キャリア・アカデミー 講師の佐藤です。
PythonやJavaなどの人気プログラミング言語を中心に講義をしています。
プライベートでは、2030年までに自分のバンドでライブをすることが目標。
「ギターの練習しなきゃ」と思いつつ、YouTubeで時間を溶かす日々を送っています。
J-POPサイコー!!

目次