009_Pythonエンジニア認定基礎試験4-6~10

目次

第4章_判定と繰り返し

今回の項目では、判定と繰り返しついて出題されます。
本試験の主教材である「Python3エンジニア認定基礎試験問題集」では第4章(P54~P56)の5問の内容です。

練習問題 1

次のコードを実行した結果を考えてみましょう。

for i in range(3):
    if i == 2:
        break

print(i)
答えはコチラをクリック!

答え:2

ポイント
breakは繰り返しを途中で強制的に〇〇する

途中で強制的に終了する

for i in range(3):

これはPythonのforループで、range(3)は0, 1, 2という整数のシーケンスを生成します。

ループの中身はiという変数をそのシーケンスの各要素に対して反復処理を行います。つまり、ループは3回繰り返され、iは順番に0, 1, 2の値を取ります。

if i == 2:

ループの中でiの値が2になったときに条件が真になります。

この条件が満たされた場合、次の行にあるbreak文が実行されます。

break

break文は現在のループを直ちに終了させます。

したがって、iが2になるとこのbreakが発動し、ループから抜けます。

print(i)

ループの後にprint(i)があります。ここでiの値が画面に出力されます。

forループがbreakによって終了した後、最後に設定されたiの値、つまり2が出力されます。

練習問題 2

次のコードを実行した結果を考えてみましょう。

dict = {"key1" : 1, "key2" : 2, "key3" : 3}
for key, value in dict.items():
    print(key, value)
答えはコチラをクリック!

答え:key1 1
key2 2
key3 3

ポイント
.items()では,辞書型のキーとバリューを〇〇取得できる

キーとバリューを両方取得できる

ディクショナリについて

ディクショナリはPythonでよく使われるデータ構造のひとつで、キーと値のペアを持つデータを格納します。

シンタックスとしては中括弧 {} を使用し、キーと値のペアはコロン : で区切られます。

コードの詳細

dict = {“key1” : 1, “key2” : 2, “key3” : 3}

ここで、dictはディクショナリとして定義されています。

キーと値のペアは”key1″: 1, “key2”: 2, “key3”: 3です。

for key, value in dict.items():

dict.items()はディクショナリのすべてのキーと値のペアを取り出します。items()メソッドは、ディクショナリ内のアイテムを(キー, 値)のタプルとして返します。

for key, value in …という構文は、返されたタプルをkeyとvalueという2つの変数に自動的にアンパックします。

このループにより、ディクショナリ内のすべてのキーとその対応する値を順に処理することができます。

print(key, value)

ループの各反復で、現在のキーと値のペアがprint()関数によって出力されます。

print(key, value)は、スペースで区切られた形式でキーと値のペアを出力します。

動作の要約

コードを実行すると、ディクショナリ内のすべてのキーと対応する値が順番に出力されます。具体的には、以下のように出力されます:

key1 1

key2 2

key3 3

練習問題 3

次のコードを実行した結果を考えてみましょう。

for i, c in enumerate([2, 3, 5]):
    print(i, c)
答えはコチラをクリック!

答え:0 2
1 3
2 5

ポイント
enumerateはインデックスと値の〇〇を参照する

インデックスと値の両方を参照する


1. `enumerate([2, 3, 5])`:

   – `enumerate`関数は、リスト`[2, 3, 5]`に対してインデックスと対応する値のペアを生成します。

   – 例えば、インデックス0には値2、インデックス1には値3、インデックス2には値5が対応します。

2. `for i, c in enumerate([2, 3, 5])`:

   – このループは、リストの各要素についてインデックス(`i`)と値(`c`)を取得します。

3. `print(i, c)`:

   – 各ループのイテレーションで、インデックス`i`と値`c`を表示します。

   – そのため、出力は以下のようになります:

     – 最初の繰り返し: `0 2`

     – 次の繰り返し: `1 3`

     – 最後の繰り返し: `2 5`

まとめると、このコードはリスト`[2, 3, 5]`の各要素に対して、そのインデックスと値をペアとして標準出力に表示します。

練習問題 4

次のコードを実行した結果を考えてみましょう。

print(sorted([5,1,3]))
答えはコチラをクリック!

答え:[1, 3, 5]

ポイント
sortedはリストを〇〇順に並び替える。

リストを小さい順に並び替える。


sorted([5, 1, 3]):

リスト [5, 1, 3] の要素を小さい順にソートします。

ソートすると、リストは [1, 3, 5] になります。

sorted 関数は、新しいソート済みリストを返します。元のリストは変更されません

そのため、最終的に得られる結果は [1, 3, 5] というソートされたリストです。

このコードは、数値リスト [5, 1, 3] を昇順に整理し、ソートされた [1, 3, 5] を出力します。

練習問題 5

次のコードを実行した結果を答えてください

for n, c in zip([1,2,3],[2, 4, 6]):
    print(n, c)
答えはコチラをクリック!

答え:1 2
   2 4
   3 6

ポイント
zipは○○のリストから並列に要素を取得できる

zipは複数のリストから並列に要素を取得できる

このコードは、`zip`関数を使って、2つのリスト `[1, 2, 3]` と `[2, 4, 6]` を同時に繰り返し処理し、それぞれのリストから対応する要素の組をタプルとして取得し、それらを出力します。具体的には次のように動作します:

1. `zip([1, 2, 3], [2, 4, 6])`:

   – `zip`関数は、複数のリストを引数として受け取り、それぞれのリストから同じ位置の要素を組み合わせたタプルを作成します。

   – この場合、`zip`は`[(1, 2), (2, 4), (3, 6)]`といったペアを生成します。

2. `for n, c in zip([1, 2, 3], [2, 4, 6])`:

   – このループでは、`zip`によって生成されたタプルを順次取得し、それぞれのタプルの最初の要素を`n`に、2番目の要素を`c`に代入します。

3. `print(n, c)`:

   – 各ループのイテレーションで、`n`と`c`の値を出力します。

具体的な出力は以下の通りです:

– `1 2`

– `2 4`

– `3 6`

つまり、このコードは、2つのリストの対応する要素を順番にペアとして取り出し、それを表示します。

確認問題 1

次のコードを実行して期待する結果が表示される時、空欄①、に入るものとして正しいものを選んでください

num_list = [5, 1, 2, 4, 6, 3]
for c in "GOOD":
    if c == "O":
        ①
    
print(c)

1、break
2、continue
3、else
4、return

答えはコチラをクリック!

答え:1

コードの基本構造

  • num_list = [5, 1, 2, 4, 6, 3]は、整数のリストを設定しますが、このリストはループには無関係で、コードの動作には影響しません。
  • for c in “GOOD”:は、文字列”GOOD”の各文字を順に反復処理します。cはループ中の現在の文字を表します。
  • if c == “O”:では、cが”O”であるかどうかを確認しています。
  • print(c)は、ループが完了した後に現在のcの値を出力します。

選択肢の解説

この場合、使用するとエラーが発生します。

break

ループを直ちに終了します。他の文字が処理されることはなく、最初の”O”が見つかった時点でループを抜けます。

したがって、print(c)は最初の”O”を出力します。

continue

現在の反復(つまり、”O”が見つかった場合)をスキップし、次の反復に進みます。

したがって、ループは”G”, 次の”O”, そして”D”を処理します。外部のprint(c)は最後の文字である”D”を出力します。

else

elseはif文の部分として機能するため、if条件が満たされていない場合に続くロジックを定義します。この場合、文法的に挿入場所として正しくありません。

正しくない挿入をすると、構文エラーが発生します。elseは他のロジックの一部としてifに続けて記述する必要があります。

return

return文は関数の中で使用されます。関数の外で使用すると構文エラーになります。

確認問題 2

次ディクショナリが代入されている変数dictのキーとバリューを同時に取得するコードとして適切なものを選択してください

1、dict.key_value()
2、dict.keys()
3、dict.items()
4、dict.values()

答えはコチラをクリック!

答え:3

ディクショナリのキーとバリューをを同時に取得するには.items()を用います。.key_value()は存在しません。.keys()はキーのみを、.values()はバリューのみを取得します。

確認問題 3

次のコードを実行した結果として正しいものを選択しましょう。

for i, c in enumerate("ABCD"):
    if i == 2:
        print(c)


1、A
2、B
3、C
4、D

答えはコチラをクリック!

答え:3

enumerate(“ABCD”):

enumerateは、繰り返し可能なオブジェクト(この場合は文字列”ABCD”)に対して、インデックス(位置)とそのインデックスに対応する値(文字)を同時に取得できる関数です。

このコードでは、”ABCD”の各文字に対してそのインデックスと文字がペアとして返されます。

for i, c in enumerate(“ABCD”):

この部分は、文字列”ABCD”の各文字とそのインデックスを順番に取得して、iにインデックス、cに文字が代入されるループを設定しています。

例えば、iは0から始まり、cは”A”から始まります。次に、iは1、cは”B”となり、以下同様に続きます。

if i == 2:

この条件文は、インデックスiが2である場合にのみブロック内のコードを実行するというものです。

print(c):

前述の条件を満たしたとき(つまりiが2のとき)、この行は文字cを表示します。

この場合、インデックス2に対応しているのは文字”C”なので、出力されるのは”C”です。

したがって、このコード全体は、「文字列”ABCD”の3番目(0から数えるとインデックス2)の文字である’C’を表示する」ものです。

確認問題 4

次リストが代入されている変数dataの要素を繰り返しで取り出すときの書き始めとして適切なものを選択してください

print(list(reversed(sorted("KEY"))))


1、[‘K’, ‘E’, ‘Y’]

2、[‘Y’, ‘E’, ‘K’]

3、[‘E’, ‘K’, ‘Y’]

4、[‘Y’, ‘K’, ‘E’]

答えはコチラをクリック!

答え:4

sorted(“KEY”):

文字列”KEY”の文字をアルファベット順にソートします。

ソートすると、文字は[‘E’, ‘K’, ‘Y’]のリストになります。

reversed(sorted(“KEY”)):

ソートされたリスト[‘E’, ‘K’, ‘Y’]を反転(逆順)します。

逆順にすると、結果は[‘Y’, ‘K’, ‘E’]になります。 reversedはイテレータを返します。

list(reversed(sorted(“KEY”))):

反転されたイテレータを再びリストに変換します。

その結果、最終的に[‘Y’, ‘K’, ‘E’]というリストが生成されます。

したがって、このコードは、文字列”KEY”をアルファベット順に並べた後でその順番を逆にし、最終的に[‘Y’, ‘K’, ‘E’]というリストを出力します。

確認問題 5

次のコードを実行した結果として正しいものを選択してください。

for n, c in zip([1, 2, 3], ["4", "5", "6"]):
    print(c * n)

1、4
   5
  6

2、4
  10
  18

3、44
  55
  66

4、4
  55
  666

答えはコチラをクリック!

答え:4

このコードはPythonのzip関数とループを使って、二つのリストの要素を組み合わせて操作する例です。それぞれを詳しく説明します。

  • zip関数:
    • zip関数は複数のリストやイテラブルを同時にループする際に使われます。与えられた複数のリストのそれぞれの要素をペアにしてタプルを作ります。今回の場合、zip([1, 2, 3], [“4”, “5”, “6”])としているので、次のようにペアが作られます: [(1, “4”), (2, “5”), (3, “6”)]。
  • forループ:
    • for n, c in …:という部分で、zipで作られた各タプルが一つずつループ内で変数nとcに割り当てられます。
    • 具体的には、1回目のループではn=1とc=”4″、2回目ではn=2とc=”5″、3回目ではn=3とc=”6″となります。
  • print(c * n)の意味:
    • c * nという操作は、文字列cを整数n回繰り返すという意味です。例えば、c=”4″とn=1であれば”4″を1回、c=”5″とn=2であれば”5″を2回、c=”6″とn=3であれば”6″を3回繰り返します。
    • 具体的に出力される結果は次の通りです:
      • 1回目: “4”を1回 → 出力: 4
      • 2回目: “5”を2回 → 出力: 55
      • 3回目: “6”を3回 → 出力: 666

したがって、このコードの出力は次のようになります:

4

55

666


次回は…

次回は「010_Pythonエンジニア認定基礎試験5-1~5」です。
コレクションの操作方法について学びましょう!

参考資料一覧:Python3エンジニア認定[基礎試験]問題集
https://www.pythonic-exam.com
https://data-engineer-japan.com
https://mynavi-agent.jp
https://python-basic.com
https://www.tokai-bs.co.jp
https://freelance.techcareer.jp/articles/wp/skills/python/detail/550/
https://pythonzen-pep8-exam.jp/

目次