Python コーディング問題 第16回『リストのスライスと逆順、アンパック代入、多次元リスト』

Python16

プログラミング上達のコツは学習初期段階でとにかく手を動かしてコーディングすることです。
本シリーズでは Python の初学者に向けたコーディング問題を出題します。
今回は リストのスライスと逆順、アンパック代入、多次元リスト を学習します。コーディング指示に従ってコーディングしてみましょう!

目次

学習の進め方

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


Python コーディング問題 1:映画コレクションの管理

プログラム説明

映画コレクションを管理するために、リストのスライスと逆順を利用するプログラムを作成します。

コーディング指示

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

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

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

  1. リスト movies を作成する
    • movies という変数にリスト ["Inception", "Interstellar", "The Dark Knight", "Memento", "Tenet", "Dunkirk", "The Prestige", "Insomnia"] を代入します。
  2. リストの5番目以降の映画タイトルをスライスして表示する
    • movies[4:] を使ってリストの5番目以降の要素をスライスし、表示します。
  3. リストの3番目から7番目までの映画タイトルをスライスして表示する
    • movies[2:7] を使ってリストの3番目から7番目までの要素をスライスし、表示します。
  4. 奇数番目の映画タイトルをスライスして表示する
    • movies[0:len(movies):2] を使って奇数番目の要素をスライスし、表示します。
  5. リストの逆順をスライスして表示する
    • movies[::-1] を使ってリストを逆順にスライスし、表示します。
  6. 元のリストが変更されていないことを確認するために表示する
    • 元のリスト movies を表示して、変更がないことを確認します。
  7. リストの内容自体を逆順に並べ替えて表示する
    • movies.reverse() を使ってリストの内容自体を逆順に並べ替えて表示します。

出力結果例

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

5番目以降の映画タイトル: [‘Tenet’, ‘Dunkirk’, ‘The Prestige’, ‘Insomnia’]
3番目から7番目までの映画タイトル: [‘The Dark Knight’, ‘Memento’, ‘Tenet’, ‘Dunkirk’, ‘The Prestige’]
奇数番目の映画タイトル: [‘Inception’, ‘The Dark Knight’, ‘Tenet’, ‘The Prestige’]
リストの逆順: [‘Insomnia’, ‘The Prestige’, ‘Dunkirk’, ‘Tenet’, ‘Memento’, ‘The Dark Knight’, ‘Interstellar’, ‘Inception’]
元のリスト: [‘Inception’, ‘Interstellar’, ‘The Dark Knight’, ‘Memento’, ‘Tenet’, ‘Dunkirk’, ‘The Prestige’, ‘Insomnia’]
逆順に並べ替えたリスト: [‘Insomnia’, ‘The Prestige’, ‘Dunkirk’, ‘Tenet’, ‘Memento’, ‘The Dark Knight’, ‘Interstellar’, ‘Inception’]

Python コード例

タップしてコード例を表示
# 映画コレクションリストを作成
movies = ["Inception", "Interstellar", "The Dark Knight", "Memento", "Tenet", "Dunkirk", "The Prestige", "Insomnia"]

# リストの5番目以降の映画タイトルをスライスして表示
print("5番目以降の映画タイトル:", movies[4:])

# リストの3番目から7番目までの映画タイトルをスライスして表示
print("3番目から7番目までの映画タイトル:", movies[2:7])

# 奇数番目の映画タイトルをスライスして表示
print("奇数番目の映画タイトル:", movies[0:len(movies):2])

# リストの逆順をスライスして表示
print("リストの逆順:", movies[::-1])

# 元のリストを表示して変更がないことを確認
print("元のリスト:", movies)

# リストの内容自体を逆順に並べ替えて表示
movies.reverse()
print("逆順に並べ替えたリスト:", movies)


Python コーディング問題 2:お買い物リストの管理

プログラム説明

お買い物リストを管理するために、リストのアンパック代入、ソート、内包表記を利用するプログラムを作成します。

コーディング指示

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

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

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

  1. リスト shopping_items を作成する
    • shopping_items という変数にリスト ["Milk", "Bread", "Eggs", "Butter", "Cheese", "Tomatoes", "Lettuce", "Chicken"] を代入します。
  2. アンパック代入を使用してリストの先頭4つのアイテムを個別の変数に格納し表示する
    • shopping_items の先頭4つのアイテムを item1, item2, item3, item4 という変数にアンパック代入します。
    • print 関数を使用して item1, item2, item3, item4 をそれぞれ表示します。
  3. リストをアルファベット順にソートして表示する(リスト自体は変更しない)
    • sorted 関数を使用して shopping_items をアルファベット順にソートし、結果を sorted_items に代入します。
    • print 関数を使用して sorted_items を表示します。
  4. リスト自体をアルファベット順にソートして表示する
    • sort メソッドを使用して shopping_items 自体をアルファベット順にソートします。
    • print 関数を使用してソート後の shopping_items を表示します。
  5. リスト内包表記を使用してリストの各アイテムの文字数を格納したリストを作成し表示する
    • リスト内包表記を使用して、shopping_items の各アイテムの文字数を格納したリスト item_lengths を作成します。
    • print 関数を使用して item_lengths を表示します。
  6. リスト内包表記を使用して名前が5文字以下のアイテムのみを含む新しいリストを作成し表示する
    • リスト内包表記を使用して、shopping_items の各アイテムの文字数を格納したリスト item_lengths を作成します。
    • print 関数を使用して item_lengths を表示します。
  7. リスト内包表記を使用して名前が5文字以下のアイテムのみを含む新しいリストを作成し表示する
    • リスト内包表記を使用して、shopping_items から名前が5文字以下のアイテムのみを含む新しいリスト short_items を作成します。
    • print 関数を使用して short_items を表示します。

出力結果例

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

先頭4つのアイテム:
Milk
Bread
Eggs
Butter
アルファベット順にソート(リスト自体は変更しない):
[‘Bread’, ‘Butter’, ‘Cheese’, ‘Chicken’, ‘Eggs’, ‘Lettuce’, ‘Milk’, ‘Tomatoes’]
アルファベット順にソート(リスト自体を変更):
[‘Bread’, ‘Butter’, ‘Cheese’, ‘Chicken’, ‘Eggs’, ‘Lettuce’, ‘Milk’, ‘Tomatoes’]
各アイテムの文字数:
[5, 6, 6, 7, 4, 7, 4, 8]
名前が5文字以下のアイテム:
[‘Bread’, ‘Eggs’, ‘Milk’]

Python コード例

タップしてコード例を表示
# お買い物リストを作成
shopping_items = ["Milk", "Bread", "Eggs", "Butter", "Cheese", "Tomatoes", "Lettuce", "Chicken"]

# リストの先頭4つのアイテムをアンパック代入して表示
item1, item2, item3, item4 = shopping_items[:4]
print("先頭4つのアイテム:")
print(item1)
print(item2)
print(item3)
print(item4)

# リストをアルファベット順にソートして表示(リスト自体は変更しない)
sorted_items = sorted(shopping_items)
print("アルファベット順にソート(リスト自体は変更しない):")
print(sorted_items)

# リスト自体をアルファベット順にソートして表示
shopping_items.sort()
print("アルファベット順にソート(リスト自体を変更):")
print(shopping_items)

# リスト内包表記を使用してリストの各アイテムの文字数を表示
item_lengths = [len(item) for item in shopping_items]
print("各アイテムの文字数:")
print(item_lengths)

# リスト内包表記を使用して名前が5文字以下のアイテムのみを含む新しいリストを作成して表示
short_items = [item for item in shopping_items if len(item) <= 5]
print("名前が5文字以下のアイテム:")
print(short_items)


Python コーディング問題 3:学校の成績管理

プログラム説明

学校の成績を管理するために、多次元リストを利用するプログラムを作成します。

コーディング指示

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

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

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

  1. 多次元リスト grades を作成する
    • grades という変数にリストを追加します。
    • grades = [[85, 90, 92],[78, 88, 85],[91, 94, 89],[70, 76, 72], [88, 84, 90]]
  2. 各学生の成績を表示する
    • for 文を使って grades の各学生の成績を表示します。
    • 学生番号を管理するために student_number という変数を使用します。
    • 各学生の成績は print 関数を使用して表示します。
  3. 各学生の平均成績を計算して表示する
    • 各学生の成績の平均を計算し、その結果を表示します。
    • 平均は、リスト内の数値の合計をリストの長さで割ることで計算します。
    • 平均成績も print 関数を使用して表示します。
    • 学生番号を管理するために student_number という変数を使用します。
  4. クラス全体の平均成績を計算して表示する
    • クラス全体の平均成績を計算し、その結果を表示します。
    • 全ての成績を合計し、総数で割ることでクラス全体の平均を計算します。
    • クラス全体の平均成績も print 関数を使用して表示します。
    • クラス全体の合計を計算するために total_sumtotal_count という変数を使用します。

出力結果例

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

各学生の成績:
学生1: [85, 90, 92]
学生2: [78, 88, 85]
学生3: [91, 94, 89]
学生4: [70, 76, 72]
学生5: [88, 84, 90]

各学生の平均成績:
学生1の平均: 89.00
学生2の平均: 83.67
学生3の平均: 91.33
学生4の平均: 72.67
学生5の平均: 87.33

クラス全体の平均成績: 84.80

Python コード例

タップしてコード例を表示
# 多次元リストを作成
grades = [
    [85, 90, 92],  # 学生1の成績
    [78, 88, 85],  # 学生2の成績
    [91, 94, 89],  # 学生3の成績
    [70, 76, 72],  # 学生4の成績
    [88, 84, 90]   # 学生5の成績
]

# 各学生の成績を表示
print("各学生の成績:")
student_number = 1  # 学生番号を管理する変数
for student_grades in grades:
    print(f"学生{student_number}: {student_grades}")
    student_number += 1

# 各学生の平均成績を計算して表示
print("\n各学生の平均成績:")
student_number = 1  # 学生番号を管理する変数
for student_grades in grades:
    average = sum(student_grades) / len(student_grades)
    print(f"学生{student_number}の平均: {average:.2f}")
    student_number += 1

# クラス全体の平均成績を計算して表示
total_sum = 0
total_count = 0
for student_grades in grades:
    total_sum += sum(student_grades)
    total_count += len(student_grades)
class_average = total_sum / total_count
print(f"\nクラス全体の平均成績: {class_average:.2f}")
(Visited 12 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

コメント

コメントする

目次