プログラミング上達のコツは学習初期段階でとにかく手を動かしてコーディングすることです。
本シリーズでは Python の初学者に向けたコーディング問題を出題します。
今回は リストのスライスと逆順、アンパック代入、多次元リスト を学習します。コーディング指示に従ってコーディングしてみましょう!
学習の進め方
- プログラム説明および目的を確認し、どのようなプログラムで何を学ぶかイメージしましょう。
- コーディング指示に従ってコーディングをします。
もし分からなければ、コード例を確認しても良いです。 - 自分の出力結果と出力結果例を比較してみましょう。
- コード例を確認し、自分のコードと比較してみましょう。
コード例は「あくまでも例」なので完全に一致する必要はありません。 - 最終的にはコーディング指示だけでコーディングできるよう、繰り返し練習しましょう。
Python コーディング問題 1:映画コレクションの管理
プログラム説明
映画コレクションを管理するために、リストのスライスと逆順を利用するプログラムを作成します。
コーディング指示
新しい Python ファイル movie_collection.py
を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
movie_collection.py
として保存します。
以下の手順に従ってプログラムを作成してください。
- リスト
movies
を作成するmovies
という変数にリスト["Inception", "Interstellar", "The Dark Knight", "Memento", "Tenet", "Dunkirk", "The Prestige", "Insomnia"]
を代入します。
- リストの5番目以降の映画タイトルをスライスして表示する
movies[4:]
を使ってリストの5番目以降の要素をスライスし、表示します。
- リストの3番目から7番目までの映画タイトルをスライスして表示する
movies[2:7]
を使ってリストの3番目から7番目までの要素をスライスし、表示します。
- 奇数番目の映画タイトルをスライスして表示する
movies[0:len(movies):2]
を使って奇数番目の要素をスライスし、表示します。
- リストの逆順をスライスして表示する
movies[::-1]
を使ってリストを逆順にスライスし、表示します。
- 元のリストが変更されていないことを確認するために表示する
- 元のリスト
movies
を表示して、変更がないことを確認します。
- 元のリスト
- リストの内容自体を逆順に並べ替えて表示する
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
を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
shopping_list.py
として保存します。
以下の手順に従ってプログラムを作成してください。
- リスト
shopping_items
を作成するshopping_items
という変数にリスト["Milk", "Bread", "Eggs", "Butter", "Cheese", "Tomatoes", "Lettuce", "Chicken"]
を代入します。
- アンパック代入を使用してリストの先頭4つのアイテムを個別の変数に格納し表示する
shopping_items
の先頭4つのアイテムをitem1
,item2
,item3
,item4
という変数にアンパック代入します。print
関数を使用してitem1
,item2
,item3
,item4
をそれぞれ表示します。
- リストをアルファベット順にソートして表示する(リスト自体は変更しない)
sorted
関数を使用してshopping_items
をアルファベット順にソートし、結果をsorted_items
に代入します。print
関数を使用してsorted_items
を表示します。
- リスト自体をアルファベット順にソートして表示する
sort
メソッドを使用してshopping_items
自体をアルファベット順にソートします。print
関数を使用してソート後のshopping_items
を表示します。
- リスト内包表記を使用してリストの各アイテムの文字数を格納したリストを作成し表示する
- リスト内包表記を使用して、
shopping_items
の各アイテムの文字数を格納したリストitem_lengths
を作成します。 print
関数を使用してitem_lengths
を表示します。
- リスト内包表記を使用して、
- リスト内包表記を使用して名前が5文字以下のアイテムのみを含む新しいリストを作成し表示する
- リスト内包表記を使用して、
shopping_items
の各アイテムの文字数を格納したリストitem_lengths
を作成します。 print
関数を使用してitem_lengths
を表示します。
- リスト内包表記を使用して、
- リスト内包表記を使用して名前が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
を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
grade_management.py
として保存します。
以下の手順に従ってプログラムを作成してください。
- 多次元リスト
grades
を作成するgrades
という変数にリストを追加します。grades = [[85, 90, 92],[78, 88, 85],[91, 94, 89],[70, 76, 72], [88, 84, 90]]
- 各学生の成績を表示する
for
文を使ってgrades
の各学生の成績を表示します。- 学生番号を管理するために
student_number
という変数を使用します。 - 各学生の成績は
print
関数を使用して表示します。
- 各学生の平均成績を計算して表示する
- 各学生の成績の平均を計算し、その結果を表示します。
- 平均は、リスト内の数値の合計をリストの長さで割ることで計算します。
- 平均成績も
print
関数を使用して表示します。 - 学生番号を管理するために
student_number
という変数を使用します。
- クラス全体の平均成績を計算して表示する
- クラス全体の平均成績を計算し、その結果を表示します。
- 全ての成績を合計し、総数で割ることでクラス全体の平均を計算します。
- クラス全体の平均成績も
print
関数を使用して表示します。 - クラス全体の合計を計算するために
total_sum
とtotal_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}")
コメント