Python コーディング問題 第17回『 タプルとセットの基本と利用 』

プログラミング上達のコツは学習初期段階でとにかく手を動かしてコーディングすることです。
本シリーズでは Python の初学者に向けたコーディング問題を出題します。
今回は タプルとセットの基本と利用 を学習します。コーディング指示に従ってコーディングしてみましょう!

目次

学習の進め方

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


Python コーディング問題 1:家計簿の管理

プログラム説明

家計簿を管理するために、タプルを利用して支出を記録し、各カテゴリの合計を計算するプログラムを作成します。

コーディング指示

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

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

以下の手順に従ってプログラムを作成してください。

  1. 支出のカテゴリと金額を格納するタプル expenses を作成する
    • expenses = (("Groceries", 20000),("Utilities", 15000),("Rent", 80000),("Transportation", 10000),("Entertainment", 5000),("Miscellaneous", 3000))
  2. 各カテゴリの支出を表示する
    • for 文を使って expenses の各カテゴリの支出を表示します。
    • カテゴリ名と支出額はそれぞれ categoryamount という変数にアンパック代入します。
    • 各カテゴリの支出は print 関数を使用して表示します。
  3. 全支出の合計を計算して表示する
    • 全支出の合計を計算し、その結果を表示します。
    • 合計支出は total_expense という変数を使用して計算します。
    • for 文で支出額だけを利用するために、カテゴリ名は _ という変数に代入します。これは、変数 _ が実際には使用されないことを示すための慣習です。
    • 合計支出も print 関数を使用して表示します。

出力結果例

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

各カテゴリの支出:
Groceries: ¥20,000
Utilities: ¥15,000
Rent: ¥80,000
Transportation: ¥10,000
Entertainment: ¥5,000
Miscellaneous: ¥3,000

全支出の合計: ¥133,000

Python コード例

タップしてコード例を表示
# 支出のカテゴリと金額を格納するタプルを作成
expenses = (
    ("Groceries", 20000),  # 食料品
    ("Utilities", 15000),  # 公共料金
    ("Rent", 80000),  # 家賃
    ("Transportation", 10000),  # 交通費
    ("Entertainment", 5000),  # 娯楽
    ("Miscellaneous", 3000)  # その他
)

# 各カテゴリの支出を表示
print("各カテゴリの支出:")
for category, amount in expenses:
    print(f"{category}: ¥{amount:,}")

# 全支出の合計を計算して表示
total_expense = 0
for _, amount in expenses:
    total_expense += amount
print(f"\n全支出の合計: ¥{total_expense:,}")

# 注釈:
# 'for _, amount in expenses' の部分で、'_' は実際には使用されない変数を示します。
# ここではカテゴリ名が使用されず、金額(amount)だけが使用されるため、このように記述しています。


Python コーディング問題 2:旅行計画の管理

プログラム説明

旅行計画の管理のために、都市、国、観光名所の情報をまとめ、特定の都市の詳細を表示するプログラムを作成します。

コーディング指示

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

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

以下の手順に従ってプログラムを作成してください。

  1. リスト cities, countries, attractions を作成する
    • cities という変数にリスト ["Tokyo", "Paris", "New York", "London", "Sydney"] を代入します。
    • countries という変数にリスト ["Japan", "France", "USA", "UK", "Australia"] を代入します。
    • attractions という変数にリスト ["Tokyo Tower", "Eiffel Tower", "Statue of Liberty", "London Eye", "Sydney Opera House"] を代入します。
  2. zip関数を使ってタプルを作成し、各都市の詳細を表示する
    • zip関数を使用して、cities, countries, attractions の要素を結合し、travel_plans という変数にタプルとして格納します。
    • forループを使って各都市の詳細を表示します。
  3. 特定の都市の詳細を表示する
    • ユーザーに特定の都市の名前を入力させ、その都市の詳細を表示します。都市が見つからない場合、エラーメッセージを表示します。
  4. enumerate関数を使って都市の一覧を表示する
    • enumerate関数を使用して、各都市のインデックスと名前を表示します。

出力結果例

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

旅行計画の詳細:
Tokyo, Japan: Tokyo Tower
Paris, France: Eiffel Tower
New York, USA: Statue of Liberty
London, UK: London Eye
Sydney, Australia: Sydney Opera House

詳細を表示したい都市の名前を入力してください: Tokyo

Tokyoの詳細:
国: Japan
観光名所: Tokyo Tower

enumerate関数を使った都市の名前:
0: Tokyo
1: Paris
2: New York
3: London
4: Sydney

Python コード例

タップしてコード例を表示
# 複数のリストを作成
cities = ["Tokyo", "Paris", "New York", "London", "Sydney"]
countries = ["Japan", "France", "USA", "UK", "Australia"]
attractions = ["Tokyo Tower", "Eiffel Tower", "Statue of Liberty", "London Eye", "Sydney Opera House"]

# zip関数を使って旅行計画をタプルに結合
travel_plans = tuple(zip(cities, countries, attractions))

# 各旅行計画の詳細を表示
print("旅行計画の詳細:")
for city, country, attraction in travel_plans:
    print(f"{city}, {country}: {attraction}")

# 特定の都市の詳細を表示
city_name = input("\n詳細を表示したい都市の名前を入力してください: ")

# 都市の詳細を探して表示
for city, country, attraction in travel_plans:
    if city.lower() == city_name.lower():
        print(f"\n{city}の詳細:\n国: {country}\n観光名所: {attraction}")
        break
else:
    # ループが完了してもbreakが呼び出されなかった場合に実行
    print(f"\n{city_name}という都市は見つかりませんでした。")

# enumerate関数を使って都市の情報をインデックスと共に表示
print("\nenumerate関数を使った都市の名前:")
for index, city in enumerate(cities):
    print(f"{index}: {city}")


Python コーディング問題 3:クラブメンバーの管理

プログラム説明

クラブメンバーのリストを管理するために、セットの基本操作、セットの数学的演算(和集合、積集合、差集合、対称差)、および要素の追加・削除を利用するプログラムを作成します。

コーディング指示

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

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

以下の手順に従ってプログラムを作成してください。

  1. セット members を作成する
    • members という変数にセット {“John”, “Alice”, “Bob”, “Diana”} を代入します。
  2. セットに新しいメンバーを追加する
    • members.add("Eve") を使って Eve をセットに追加します。
    • print 関数を使用して members を表示します。
  3. セットからメンバーを削除する
    • members.remove("Alice") を使って Alice をセットから削除します。
    • print 関数を使用して members を表示します。
  4. 別のセット new_members を作成する
    • new_members という変数にセット {"Frank", "Diana", "Grace"} を代入します。
  5. セットの和集合を計算して表示する
    • members.union(new_members) または members | new_members を使用して和集合を計算し、結果を all_members に代入します。
    • print 関数を使用して all_members を表示します。
  6. セットの積集合を計算して表示する
    • members.intersection(new_members) または members & new_members を使用して積集合を計算し、結果を common_members に代入します。
    • print 関数を使用して common_members を表示します。
  7. セットの差集合を計算して表示する
    • members.difference(new_members) または members - new_members を使用して差集合を計算し、結果を exclusive_members に代入します。
    • print 関数を使用して exclusive_members を表示します。
  8. セットの対称差を計算して表示する

出力結果例

タップして出力結果例を表示
(セットを利用しているため、表示される順番は異なることがあります)

メンバー追加後:
{‘Eve’, ‘John’, ‘Diana’, ‘Bob’, ‘Alice’}
メンバー削除後:
{‘Eve’, ‘John’, ‘Diana’, ‘Bob’}
和集合:
{‘Frank’, ‘Grace’, ‘Diana’, ‘Eve’, ‘Bob’, ‘John’}
積集合:
{‘Diana’}
差集合:
{‘Bob’, ‘Eve’, ‘John’}
対称差:
{‘Eve’, ‘John’, ‘Frank’, ‘Grace’, ‘Bob’}

Python コード例

タップしてコード例を表示
# クラブメンバーのセットを作成
members = {"John", "Alice", "Bob", "Diana"}

# 新しいメンバーを追加
members.add("Eve")
print("メンバー追加後:")
print(members)

# メンバーを削除
members.remove("Alice")
print("メンバー削除後:")
print(members)

# 新しいセットを作成
new_members = {"Frank", "Diana", "Grace"}

# 和集合を計算して表示
all_members = members.union(new_members)
print("和集合:")
print(all_members)

# 積集合を計算して表示
common_members = members.intersection(new_members)
print("積集合:")
print(common_members)

# 差集合を計算して表示
exclusive_members = members.difference(new_members)
print("差集合:")
print(exclusive_members)

# 対称差を計算して表示
symmetric_difference_members = members.symmetric_difference(new_members)
print("対称差:")
print(symmetric_difference_members)
(Visited 19 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

職業訓練校 エヌ・キャリア・アカデミー 講師の竹内です。
主にWebアプリケーション開発講座を担当しています。
初学者の方へ向けて、これからIT業界を歩んでいくための “その人なりの基準やものさし” を持てるような講義を心掛けています。
SE Mediaでも初学者の方がWebアプリケーション制作に役立つ記事を発信していきます!

コメント

コメントする

目次