学習目標
- リストの作成、要素の追加・削除・変更ができる
- リストと繰り返し処理を組み合わせて使える
- 辞書の基本操作を理解し使える
- リストと辞書を使った実践的なプログラムを作成できる
前回の復習
前回学んだ内容を簡単に確認しましょう:
# For loop with range
for i in range(5):
print("Number:", i)
# While loop
count = 1
while count <= 3:
print("Count:", count)
count = count + 1
復習問題:1から5までの数字の合計を求めるプログラムを作ってみよう
1. リストとは
リストは複数のデータをまとめて扱うためのデータ型です。一つの変数に複数の値を格納できます。
リストの作成
# Empty list
fruits = []
# List with initial values
fruits = ["apple", "banana", "orange"]
numbers = [1, 2, 3, 4, 5]
mixed = ["hello", 42, 3.14, True]
print(fruits)
print(numbers)
print(mixed)
実習1:好きな食べ物のリストを作って表示してみよう
2. リストの要素にアクセス
リストの各要素には、変数に「インデックス」という番号を付加して、表示することができます。重要なのは、番号が0から始まることです。
インデックスでアクセス
fruits = ["apple", "banana", "orange", "grape"]
print(fruits[0]) # First element: apple
print(fruits[1]) # Second element: banana
print(fruits[2]) # Third element: orange
print(fruits[3]) # Fourth element: grape
# Negative index (from the end)
print(fruits[-1]) # Last element: grape
print(fruits[-2]) # Second to last: orange
リストの長さ
リストの長さを求める関数は len() です。
fruits = ["apple", "banana", "orange"]
print("List length:", len(fruits)) # 3
実習2:上のコードを実行して、インデックスの仕組みを確認してみよう
3. リストの要素を変更
要素の変更
fruits = ["apple", "banana", "orange"]
print("Before:", fruits)
fruits[1] = "grape" # Change second element
print("After:", fruits)
要素の追加
fruits = ["apple", "banana"]
# Add to the end
fruits.append("orange")
print("After append:", fruits)
# Insert at specific position
fruits.insert(1, "grape") # Insert at index 1
print("After insert:", fruits)
メソッド(変数に付加する関数)について:
.append(),.insert(),.remove()などは「メソッド」と呼ばれる変数名.メソッド名()の形で使用する- リストに対して特定の操作を行う専用の関数
要素の削除
fruits = ["apple", "banana", "orange", "grape"]
# Remove by value
fruits.remove("banana")
print("After remove:", fruits)
# Remove by index
del fruits[0] # Remove first element
print("After del:", fruits)
pop()メソッドについて:
リストから要素を取り出して削除するメソッドです。取り出した要素は戻り値として返されます。
- 最後の要素を取り出して、その値を返す
- 同時にリストからその要素を削除する
fruits = ["apple", "banana", "cherry", "date"]
last_fruit = fruits.pop()
print(last_fruit) # "date"
print(fruits) # ["apple", "banana", "cherry"]
pop(インデックス)で指定した位置の要素も取り出せる
fruits = ["apple", "banana", "cherry", "date"]
second_fruit = fruits.pop(1)
print(second_fruit) # "banana"
print(fruits) # ["apple", "cherry", "date"]
実習3:リストの要素を追加・変更・削除してみよう
for文でリストの全要素を処理します。
fruits = ["apple", "banana", "orange"]
# Method 1: Direct iteration
for fruit in fruits:
print("I like", fruit)
fruits = ["apple", "banana", "orange"]
# Method 2: Using index
for i in range(len(fruits)):
print(f"Index {i}: {fruits[i]}")
リストを使った計算
numbers = [10, 20, 30, 40, 50]
# Calculate sum
total = 0
for num in numbers:
total = total + num
print("Sum:", total)
# Find maximum
maximum = numbers[0]
for num in numbers:
if num > maximum:
maximum = num
print("Maximum:", maximum)
実習4:数字のリストを作って、平均値を計算してみよう
リストを対象にした関数
numbers = [23, 45, 12, 67, 34]
maximum = max(numbers)
minimum = min(numbers)
sum = sum(numbers)
print("Max:",maximum,"Min: ",minimum, "Sum: ",sum)
5. 辞書とは
辞書は「キー」と「値」のペアでデータを管理するデータ型です。リストがインデックス(番号)で要素にアクセスするのに対し、辞書は「キー」でアクセスします。
辞書の作成
# Empty dictionary
student = {}
# Dictionary with initial values
student = {
"name": "Tanaka Taro",
"age": 17,
"grade": 2,
"subject": "Math"
}
print(student)
辞書のキーについて:
- 文字列をキーにする場合は
"(クォーテーション)が必要 - 数値をキーにする場合は
"は不要 - 例:
{1: "first", 2: "second", "name": "Taro"}
辞書の要素にアクセス
student = {
"name": "Tanaka Taro",
"age": 17,
"grade": 2
}
print(student["name"]) # Tanaka Taro
print(student["age"]) # 17
print(student["grade"]) # 2
実習5:自分の情報を辞書にして表示してみよう
6. 辞書の操作
要素の追加・変更
student = {"name": "Tanaka Taro", "age": 17}
# Add new element
student["grade"] = 2
print("After adding grade:", student) # {'name': 'Tanaka Taro', 'age': 17, 'grade': 2}
# Change existing element
student["age"] = 18
print("After changing age:", student) # {'name': 'Tanaka Taro', 'age': 18, 'grade': 2}
要素の削除
student = {
"name": "Tanaka Taro",
"age": 17,
"grade": 2,
"subject": "Math"
}
# Remove specific key
del student["subject"]
print("After del:", student) # {'name': 'Tanaka Taro', 'age': 17, 'grade': 2}
実習6:辞書の要素を追加・変更・削除してみよう
辞書の全要素を表示
方法1
student = {
"name": "Tanaka Taro",
"age": 17,
"grade": 2
}
# Method 1: Get key first, then access value
for key in student:
print(f"{key}: {student[key]}")
方法2
student = {
"name": "Tanaka Taro",
"age": 17,
"grade": 2
}
# Method 2: Get both key and value directly
for key, value in student.items():
print(f"{key}: {value}")
2つの方法の違い:
- 方法1:キーを取得してから、そのキーで値にアクセス
- 方法2:
.items()を使ってキーと値を同時に取得(より効率的)
7. リストと辞書の組み合わせ
辞書のリスト(複数の学生情報)
students = [
{"name": "Tanaka Taro", "age": 17, "score": 85},
{"name": "Suzuki Hanako", "age": 16, "score": 92},
{"name": "Sato Jiro", "age": 17, "score": 78}
]
# Display all students
for student in students:
print(f"Name: {student['name']}, Age: {student['age']}, Score: {student['score']}")
print("---")
# Calculate average score
total_score = 0
for student in students:
total_score = total_score + student["score"]
average = total_score / len(students)
print(f"Average score: {average}")
リストを値として持つ辞書
student_scores = {
"Tanaka": [85, 90, 78, 92],
"Suzuki": [88, 85, 90, 87],
"Sato": [75, 80, 85, 82]
}
# Display each student's scores
for name, scores in student_scores.items():
average = sum(scores) / len(scores)
print(f"{name}: {scores}, Average: {average:.1f}")
最後の行 print(f"{name}: {scores}, Average: {average:.1f}") の説明
f文字列(f-string) を使った印字{average:.1f} は平均を 小数第1位まで 表示する指定
実習7:複数の学生の情報を管理するプログラムを作ってみよう
8. 実践的なプログラム
例1:成績管理システム
機能説明:
- 複数の学生の名前と成績を入力・保存
- 全学生の成績を表示
- 平均点の計算
- 最高得点者の表示
print("=== Grade Management System ===")
# Student data
students = []
# Add students
while True:
name = input("Enter student name (or 'quit' to finish): ")
if name.lower() == "quit":
break
try:
score = int(input(f"Enter {name}'s score: "))
student = {"name": name, "score": score}
students.append(student)
print(f"Added {name} with score {score}")
except ValueError:
print("Please enter a valid number for score")
print("\n=== Results ===")
# Display all students
total_score = 0
for student in students:
print(f"{student['name']}: {student['score']}")
total_score = total_score + student["score"]
# Calculate and display average
if len(students) > 0:
average = total_score / len(students)
print(f"\nAverage score: {average:.1f}")
else:
print("\nNo students data")

例2:英単語クイズアプリ
機能説明:
- 英単語と日本語訳の辞書からランダムに出題するクイズ機能
- 正答数のカウント
- 正解・不正解の判定と正答表示
print("=== English Vocabulary ===")
# Word dictionary
vocabulary = {
"apple": "りんご",
"book": "本",
"car": "車",
"dog": "犬",
"egg": "卵"
}
# Quiz mode
import random
words = list(vocabulary.keys()) # Get all English words
score = 0
print("Let's start the vocabulary quiz!")
print("Enter the Japanese meaning for each English word.")
for i in range(3): # 3 questions
word = random.choice(words)
answer = input(f"What does '{word}' mean in Japanese? ")
if answer == vocabulary[word]:
print("Correct!")
score = score + 1
else:
print(f"Wrong. The correct answer is '{vocabulary[word]}'")
print(f"\nYour score: {score}/3")

実習8:成績管理システムまたは単語帳プログラムを実行してみよう
9. 課題
課題1:買い物リスト管理
以下の機能を持つ買い物リスト管理プログラムを作ってください:
- 商品を追加する
- 商品を削除する
- 全商品を表示する
- 終了する
シンプルな解答例(これに何かを加えていないとダメよ)
# Shopping List Management Program
# Create an empty list
shopping_list = []
# 1. Add items
while True:
item = input("Enter item name (or 'quit' to finish): ")
if item == "quit":
break
shopping_list.append(item)
# 2. Display list
print("\n【Shopping List】")
for i in range(len(shopping_list)):
print(f"{shopping_list[i]}")
# 3. Delete items
print("\n【Delete Items】")
while True:
delete_item = input("Enter item name to delete (or 'quit' to finish): ")
if delete_item == "quit":
break
if delete_item in shopping_list:
shopping_list.remove(delete_item)
print(f"Deleted '{delete_item}'")
else:
print(f"'{delete_item}' is not in the list")
# 4. Display final list
print("\n【Final Shopping List】")
for i in range(len(shopping_list)):
print(f"{shopping_list[i]}")
課題2:電話帳プログラム
名前をキー、電話番号を値とする辞書を使って、以下の機能を持つプログラムを作ってください:
- 連絡先を追加する
- 連絡先を検索する
- 全連絡先を表示する
シンプルな解答例(これに何かを加えていないとダメよ)
# Phone Book Program (Dictionary Practice)
# Create an empty dictionary
phone_book = {}
# 1. Add contacts
while True:
name = input("Enter name (or 'quit' to finish): ")
if name == "quit":
break
phone = input("Enter phone number: ")
phone_book[name] = phone
print(f"Added {name}: {phone}\n")
# 2. Display all contacts
print("\n【All Contacts】")
for name in phone_book:
print(f"{name}: {phone_book[name]}")
# 3. Search for a contact
while True:
search_name = input("Enter name to search (or 'quit' to finish): ")
if search_name == "quit":
break
if search_name in phone_book:
print(f"{search_name}: {phone_book[search_name]}")
else:
print(f"{search_name} not found")
print()
課題3:成績統計プログラム
複数の教科の成績を管理し、以下を計算するプログラムを作ってください:
- 各教科の平均点
- 最高点と最低点
- 各学生の平均点
まとめ
今日学んだこと:
- リスト:複数のデータをまとめて管理
- 作成、アクセス、追加、削除、変更
- 繰り返し処理との組み合わせ
- 辞書:キーと値のペアでデータを管理
- 作成、アクセス、追加、削除、変更
- 全要素の表示方法
- 実践的な応用:リストと辞書を組み合わせた複雑なデータ構造
次回は、関数の作成について学習します。
宿題:課題1〜3、あるいは発展課題(オリジナル課題)にもチャレンジしてみましょう。

コメント