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

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

目次

学習の進め方-

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

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

プログラム説明

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

目的

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

コーディング指示

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

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

calculate_salary という関数を作成する

  1. 関数名は calculate_salary とします。
  2. 引数として base_salarybonus を必須引数として受け取ります。
  3. 交通費 transportation_allowance はデフォルト引数として受け取り、省略可能にします(デフォルト値は 10000 円とします)。
  4. 関数内で基本給、ボーナス、交通費を合計して総給与を計算し、その結果を返します。

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

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

出力結果例

タップして出力結果例を表示

基本給を入力してください: 250000
ボーナスを入力してください: 300000
交通費を入力してください (省略可能): 13000
総給与は 563000 円です

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

基本給を入力してください: 250000
ボーナスを入力してください: 300000
交通費を入力してください (省略可能):
総給与は 560000 円です

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_creator.py を作成する

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

create_profile という関数を作成する

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

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

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

出力結果例

タップして出力結果例を表示

名前を入力してください: NCA 太郎
年齢を入力してください: 25
趣味を入力してください (省略可能): 読書
住んでいる都市を入力してください (省略可能): 東京
プロフィール: 名前: NCA 太郎, 年齢: 25, 趣味: 読書, 都市: 東京

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

名前を入力してください: NCA 太郎
年齢を入力してください: 25
趣味を入力してください (省略可能):
住んでいる都市を入力してください (省略可能):
プロフィール: 名前: NCA 太郎, 年齢: 25, 趣味: なし, 都市: 不明

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_numbers.py を作成する

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

sum_all という関数を作成する

  1. sum_all という関数を定義し、引数として任意の数の数値を受け取ります。
  2. 関数内で受け取った数値の合計を計算し、その結果を返します。
  3. この関数では*argsを使用します。

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

  1. ユーザーに数値をカンマ区切りで入力させ、それをリストに変換します。
  2. sum_all 関数を呼び出し、数値の合計を計算します。
  3. 計算結果を表示します。

出力結果例

タップして出力結果例を表示

数値をカンマ区切りで入力してください: 1,2,3,4,5
合計: 15

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_creator.py を作成する

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

create_profile という関数を作成する

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

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

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

出力結果例

タップして出力結果例を表示

名前を入力してください: NCA 太郎
年齢を入力してください: 25
趣味を入力してください: 読書
住んでいる都市を入力してください: 東京
名前: NCA 太郎
年齢: 25
趣味: 読書
都市: 東京

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)
(Visited 7 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次