問題編:Pythonのfor文を使った練習問題

初心者から中級者向けのPython練習問題を5問用意しました。for文を使った様々なデータ型の操作を学びましょう。
問題1: リストの合計を求める
以下のリストが与えられています。これを for
文を使って、リスト内の数値の合計を求めるコードを書いてください。
numbers = [3, 7, 12, 5, 8]
回答:
total_number = 0
for number in numbers:
total_number += number
print(total_number)
出力:
35
解説:
- 初期値
total_number = 0
を設定しました。これは合計を求めるための「箱」の役割を果たします。 for
文を用いてnumbers
に含まれる各要素をnumber
という変数に代入し、繰り返し処理を行っています。- 各要素を
total_number
に加算することで、リスト内の要素を順に足していきます。 - 最後に
print(total_number)
を使うことで、最終合計値を出力します。
注意点(私が間違えた箇所)
print(total_number)
をループ中に書いてしまっていたため、合計値がループの各段階で出力されてしまいました。最終結果だけを表示したいので、print(total_number)
をループの外に配置する必要がありました。
問題2: 辞書の値の合計を求める
以下の辞書が与えられています。この辞書の値(value)の合計値を for
文を使って計算してください。
scores = {"Alice": 85, "Bob": 92, "Charlie": 78, "Diana": 90}
回答:
total_benefits = 0
for value in scores.values():
total_benefits += value
print(total_benefits)
出力:
345
解説:
scores.values()
は辞書scores
の値(85, 92, 78, 90)を取り出します。これにより、ループ内で値のみを扱うことができます。for value in scores.values()
とすることで、順番に値を取り出し、変数value
に代入しています。- 各値を変数
total_benefits
に加算して、最終的に合計値を計算しています。 - ループが終わった後に、
print(total_benefits)
で最終結果を表示します。
注意点(私が間違えた箇所)
for value in scores:
total_benefits += scores[value]
としてしまいました。辞書内の値を取り出すには「for 変数名 in 辞書.value(): 」とすることで、値のみを取り出すことができます。最後の「()」も忘れないようにしないといけません。
問題3: タプルの要素を加工する
以下のタプルが与えられています。このタプル内の各要素を2倍にした新しいリスト(タプルではなくリスト)を作成してください。
numbers = (1, 3, 5, 7, 9)
回答:
number_list = []
numbers = (1, 3, 5, 7, 9)
for number in numbers:
number *= 2
number_list.append(number)
print(number_list)
出力:
[2, 6, 10, 14, 18]
解説:
- 初期化
・空のリストnumber_list = []
を作成します。このリストに加工後の要素を追加していきます。 - ループ処理
・与えられたタプルnumbers
に対してfor number in numbers
を使用してループを回します。各タプルの値(1、3、5、7、9)が順番にnumber
に代入されます。
・number *= 2
では要素を2倍にする計算を行います。
・加工後の値をnumber_list.append(number)
を使ってリストに追加しています。 - 出力
・最後に作成したリストnumber_list
をprint(number_list)
で出力しています。
注意点(私が間違えた箇所)
この問題は間違えることなく回答できました。「空のリストを作ること」「.append()でリストに追加すること」が気をつける点です。
問題4: 偶数だけをリスト化する
以下のリストが与えられています。このリスト内の 偶数のみを取り出して 新しいリストを作成してください。
numbers = [10, 15, 23, 42, 44, 73, 88, 91]
回答:
even_number_list = []
numbers = [10, 15, 23, 42, 44, 73, 88, 91]
for number in numbers:
if number % 2 == 0:
even_number_list.append(number)
print(even_number_list)
出力:
[10, 42, 44, 88]
解説:
- 初期化
・空のリスト even_number_list = []
を作成します。このリストに加工後の要素を追加していきます。 - ループ処理
・for number in numbers
を使って、リストnumbers
から1つずつ値を取り出して変数number
に割り当てます。
・このループ処理を通じて、リスト内のすべての要素を確認できます。 - 条件判定
・if number % 2 == 0
により、偶数だけを抽出する条件を設定します。 - リストに追加
・条件に一致する偶数をeven_number_list.append(number)
を使ってeven_number_list
に追加します。 - 出力
・最終的に、even_number_list
を表示することで、偶数だけを含むリスト[10, 42, 44, 88]
を出力します。
注意点(私が間違えた箇所)
この問題も間違えることなく回答できました。「number % 2 == 0:」は「numberを2で割った余りが0」ということ、つまり「偶数」ということです。
問題5: セットから特定条件の要素を抽出する
与えられたセットから、特定の条件(値が 30以上かつ70以下 の要素)に一致する要素を抽出し、新しいセットを作成してください。
numbers = {10, 15, 23, 42, 44, 73, 88, 91}
回答:
Numerical_value_under_conditions = set() # 空のセットを初期化
numbers = {10, 15, 23, 42, 44, 73, 88, 91} # 元のセット
for number in numbers: # セット内の各要素を逐一処理
if number >= 30 and number <= 70: # 条件を満たす場合
Numerical_value_under_conditions.add(number) # 要素をセットに追加
print(Numerical_value_under_conditions) # 出力
出力:
{42, 44, 73}
解説:
- セットの初期化
・set()
を使って空のセットを初期化します。
・{}
の記法だけだと空の辞書オブジェクトになってしまうので注意。 add()
を使用
・セットに要素を追加する場合は.add()
を使用します。appendは使用しません。- 条件判定
・number >= 30 and number <= 70
により、30以上かつ70以下の要素を抽出する条件を設定します。 - 出力
・最終的に条件に一致した要素のみを含むセットをprint()
で表示します。
注意点(私が間違えた箇所)
空のセットを初期化(set())、セットに要素を追加(add())を知らず、リストに追加と同じコードを書いてしまっていました。
1から5問までの基礎問題いかがでしたでしょうか。次回は6から10問までの少し難易度の上がる問題です。アウトプットして理解を深めましょう!
コメント