PR

問題編 for文を理解する 1〜5問

眠そうな男性が夜中までPythonを学習している様子 python
夜遅くまでPython学習に没頭する男性:目を擦りあくびをしながらも、プログラミングスキルを磨く姿

問題編: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

解説:

  1. 初期値 total_number = 0 を設定しました。これは合計を求めるための「箱」の役割を果たします。
  2. for 文を用いて numbers に含まれる各要素を number という変数に代入し、繰り返し処理を行っています。
  3. 各要素を total_number に加算することで、リスト内の要素を順に足していきます。
  4. 最後に 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

解説:

  1. scores.values() は辞書 scores の値(85, 92, 78, 90)を取り出します。これにより、ループ内で値のみを扱うことができます。
  2. for value in scores.values() とすることで、順番に値を取り出し、変数 value に代入しています。
  3. 各値を変数 total_benefits に加算して、最終的に合計値を計算しています。
  4. ループが終わった後に、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]

解説:

  1. 初期化
    ・空のリスト number_list = [] を作成します。このリストに加工後の要素を追加していきます。
  2. ループ処理
    ・与えられたタプル numbers に対して for number in numbers を使用してループを回します。各タプルの値(1、3、5、7、9)が順番に number に代入されます。
    number *= 2 では要素を2倍にする計算を行います。
    ・加工後の値を number_list.append(number) を使ってリストに追加しています。
  3. 出力
    ・最後に作成したリスト 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]

解説:

  1. 初期化
    ・空のリスト even_number_list = [] を作成します。このリストに加工後の要素を追加していきます。
  2. ループ処理
    for number in numbers を使って、リスト numbers から1つずつ値を取り出して変数 number に割り当てます。
    ・このループ処理を通じて、リスト内のすべての要素を確認できます。
  3. 条件判定
    if number % 2 == 0 により、偶数だけを抽出する条件を設定します。
  4. リストに追加
    ・条件に一致する偶数を even_number_list.append(number) を使って even_number_list に追加します。
  5. 出力
    ・最終的に、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}

解説:

  1. セットの初期化
    set() を使って空のセットを初期化します。
    {} の記法だけだと空の辞書オブジェクトになってしまうので注意。
  2. add() を使用
    ・セットに要素を追加する場合は .add() を使用します。appendは使用しません。
  3. 条件判定
    number >= 30 and number <= 70 により、30以上かつ70以下の要素を抽出する条件を設定します。
  4. 出力
    ・最終的に条件に一致した要素のみを含むセットを print() で表示します。

注意点(私が間違えた箇所)

空のセットを初期化(set())、セットに要素を追加(add())を知らず、リストに追加と同じコードを書いてしまっていました。

1から5問までの基礎問題いかがでしたでしょうか。次回は6から10問までの少し難易度の上がる問題です。アウトプットして理解を深めましょう!

コメント

タイトルとURLをコピーしました