第4章_判定と繰り返し
今回の項目では、判定と繰り返しついて出題されます。
本試験の主教材である「Python3エンジニア認定基礎試験問題集」では第4章(P52~P54)の5問の内容です。
練習問題 1
次のコードを実行した結果を考えてみましょう。
num = 3
if num % 2 == 0 and num % 3 == 0:
print(f"{num}は6の倍数")
elif num % 2 == 0 or num % 3 == 0:
print(f"{num}は2の倍数か3の倍数")
else:
print(f"{num}は2の倍数でも3の倍数でもない")
答えはコチラをクリック!
答え:3は2の倍数か3の倍数
ポイント
andは条件がどちらも満たすかを調べ、orは条件が〇〇満たすかを調べる
orは条件がどちらか満たすかを調べる
最初のif num % 2 == 0 and num % 3 == 0ではnumが2と3のどちらでも割り切れるかを調べています。ここで、num = 3であり2では割り切れないため条件を満たしません。
次のelif num % 2 == 0 or num % 3 == 0では、2と3のどちらかで割り切れるかを調べています。3で割り切れるため、条件を満たし3は2の倍数か3の倍数と表示されます。
練習問題 2
次のコードを実行した結果を考えてみましょう。
value = 0 or 1 and 2
print(value)
答えはコチラをクリック!
答え:2
ポイント
Pythonでは0が偽、それ以外の整数値が〇
それ以外の整数値が真
1. 演算子の優先順位 Pythonでは、論理演算子には以下の優先順位があります(上ほど優先されます):
1. and
2. or
したがって、このコードは次のように解釈されます:
value = 0 or (1 and 2)
2. and の評価 1 and 2 は「論理積」を意味します。Pythonでは、and は次のように評価されます: 最初の値が 偽(False) の場合、それを返します。 最初の値が 真(True) の場合、次の値を返します。 ここでは 1 は真であり、次の値 2 を返すので、1 and 2 の結果は 2 になります。
3. or の評価 次に、0 or 2 を評価します。or は次のように評価されます: 最初の値が 真(True) の場合、それを返します。 最初の値が 偽(False) の場合、次の値を返します。 ここでは 0 は偽であり、次の値 2 を返すので、0 or 2 の結果は 2 になります。
4. 結論 最終的に value に 2 が代入されます。print(value) の結果は: 2
練習問題 3
次のコードを実行した結果を考えてみましょう。
value = None
if value is None:
print("value is None")
else:
print("value is not None")
答えはコチラをクリック!
答え:value is None
ポイント
Noneは 〇〇 で判定する
Noneは is None で判定する
1. コード全体の流れ
value = None
まず、変数 value に None を代入しています。None は Python における「値がない」ことを表す特殊な値です。
if value is None:
print(“value is None”)
ここでは if 文を使い、value が None であるかどうかを条件として判定しています。
- is 演算子は、「オブジェクトが同一であるかどうか」を確認するために使われます。ここでは、value が None と同じオブジェクトかどうかをチェックしています。
- 条件が True(つまり value is None が成り立つ)なら、”value is None” を出力します。
else:
print(“value is not None”)
もし value が None でなかった場合には、”value is not None” を出力します。
2. コードの実行結果
このコードでは、value = None としているため、if 条件は True になります。そのため以下が出力されます:
value is None
3. ポイント
else 部分は、if 条件が False の場合に実行されるコードを指定します。
is None と == None の違い
is None はオブジェクトの同一性を確認します。
例: value is None は、value が None そのものであることを確認。
== None は値の等価性を確認します。value の値が None に等しい場合に True を返します。
ただし、Python では is None を使うのが慣例です。
else の役割
else 部分は、if条件がFalseの場合に実行されるコードを指定します。
練習問題 4
次のコードを実行した結果を考えてみましょう。
data = [1, 2, 3]
for i in data:
print(i)
答えはコチラをクリック!
答え:1
2
3
ポイント
for文は〇〇の中身を一つずつ取り出せる。
for文はリストの中身を一つずつ取り出せる。
data = [1, 2, 3]
リスト data を定義しています。
リストは、複数の要素を一括して格納できるPythonの基本的なデータ構造です。
このリストには3つの整数 [1, 2, 3] が含まれています。
for i in data:
for ループは、data 内の各要素を1つずつ取り出して処理を行います。
ループの仕組み:
最初の繰り返しで i に 1 が代入されます。
次に i に 2 が代入されます。
最後に i に 3 が代入されます。
in data の部分は、data リストの各要素にアクセスすることを意味します。
print(i)
for ループ内で現在の値 i を出力します。
各繰り返しごとに i の値が変わるので、それぞれの値が順番に表示されます。
実行結果
このコードを実行すると、次の出力が得られます:
1
2
3
練習問題 5
次のコードを実行した結果を考えてみましょう。
for i in range(2):
print(i)
答えはコチラをクリック!
答え:0
s1
ポイント
for i in range(2)の書き方のとき i は〇から始まる
for i in range(2)の書き方のとき i は 0 から始まる
for i in range(2):
range(2) は、0から始まり、指定した値(2)より小さい整数を生成する関数です。
この場合、range(2) は [0, 1] を生成します。
for ループは、この生成された数値を1つずつ i に代入し、ループのたびに処理を繰り返します。
print(i)
ループ内で現在の値 i を出力します。
ループは2回実行され、それぞれの回で i の値を出力します。
実行結果
このコードを実行すると、以下のような出力が得られます:
0
1
確認問題 1
次のコードを実行して期待する結果が表示される時、空欄①、②に入るものとして正しいものを選んでください
num_list = [5, 1, 2, 4, 6, 3]
for i in num_list:
if i % 2 == 0 ➀ i % 3 == 0:
print(f"{i}は6の倍数")
elif i % 2 == 0 ➁ i % 3 == 0:
print(f"{i}は2の倍数か3の倍数")
else:
print(f"{i}は2の倍数でも3の倍数でもない")
<期待する結果>
5は2の倍数でも3の倍数でもない
1は2の倍数でも3の倍数でもない
2は2の倍数か3の倍数
4は2の倍数か3の倍数
6は6の倍数
3は2の倍数か3の倍数
1、➀ and、 ➁ and
2、➀ and、 ➁ or
3、➀ or、 ➁ and
4、➀ or、 ➁ or
答えはコチラをクリック!
答え:2
リストの要素をループで処理
for i in num_list:
- num_list の各要素を i として順に処理します。
条件分岐
- if i % 2 == 0 and i % 3 == 0:
- i が 2 の倍数かつ 3 の倍数であれば 6 の倍数と判定し、メッセージを出力。
- elif i % 2 == 0 or i % 3 == 0:
- i が 2 の倍数または 3 の倍数であれば、その旨を出力。
- else:
- それ以外の場合(2 の倍数でも 3 の倍数でもない場合)、別のメッセージを出力。
出力の例 実行結果:
5は2の倍数でも3の倍数でもない
1は2の倍数でも3の倍数でもない
2は2の倍数か3の倍数
4は2の倍数か3の倍数
6は6の倍数
3は2の倍数か3の倍数
確認問題 2
次のコードを実行した結果として正しいものを選択しましょう。
1、0 1
2、0 2
3、True False
4、False True
value1 = 0 and 1 and 2
value2 = 0 or 1 or 2
print(value1, value2)
答えはコチラをクリック!
答え:1
1. value1 = 0 and 1 and 2
- and 演算子の挙動:
- and は左から右に評価されます。各値が「真」か「偽」かを評価し、最初に見つかった「偽」の値を返します。すべての値が「真」の場合、最後の値を返します。
この場合、0 and 1 and 2 を評価します:
- 0 は Python では「偽」 (False) と見なされます。最初に「偽」である 0 を見つけたため、それ以降の評価は行われず、0 が返されます。
結果: value1 = 0
2. value2 = 0 or 1 or 2
- or 演算子の挙動:
- or も左から右に評価されます。各値が「真」か「偽」かを評価し、最初に見つかった「真」の値を返します。すべての値が「偽」の場合、最後の値を返します。
この場合、0 or 1 or 2 を評価します:
- 0 は「偽」 (False) と見なされます。次に 1 を評価します。1 は「真」 (True) と見なされるため、それ以降の評価は行われず、1 が返されます。
結果: value2 = 1
結果の出力
print(value1, value2) の結果は以下の通りです:
0 1
確認問題 3
変数valueがNoneかどうかを判定するコードとして最も適切なものを選択しましょう
1、if value
2、if value == None
3、if value is None
4、if value is not None
答えはコチラをクリック!
答え:3
Noneかどうかは is Noneで判定します。
確認問題 4
次リストが代入されている変数dataの要素を繰り返しで取り出すときの書き始めとして適切なものを選択してください
1、for i in data do
2、for (let i in data)
3、for (int i: data)
4、for i in data:
答えはコチラをクリック!
答え:4
リストの中身を繰り返しで取り出すときは、「for i in リスト:」と書き始めます。
確認問題 5
3回繰り返される記述の書き始めとして適切でないものを選択してください。
1、for i in range(3):
2、for i in range(0, 3):
3、for i in range(1, 3):
4、for i in range(1, 6, 2):
答えはコチラをクリック!
答え:3
1. 選択肢の説明
1. for i in range(3):
- このコードは range(3) に基づいて繰り返しを行います。
- range(3) は [0, 1, 2] を生成します。
- したがって、ループは 3回 実行されます。
- 適切 です。
2. for i in range(0, 3):
- このコードは range(0, 3) を使っています。
- range(0, 3) は [0, 1, 2] を生成します。
- この場合もループは 3回 実行されます。
- 適切 です。
3. for i in range(1, 3):
- このコードは range(1, 3) を使っています。
- range(1, 3) は [1, 2] を生成します。
- ループは 2回 実行されます(1 と 2 のみ)。
- 適切ではありません。
4. for i in range(1, 6, 2):
- このコードは range(1, 6, 2) を使っています。
- range(1, 6, 2) は 1 から始まり、2ずつ増加して 6 より小さい値を生成します。具体的には [1, 3, 5] を生成します。
- ループは 3回 実行されます(1, 3, 5)。
- 適切 です。
2. 正解
- 3回繰り返される記述として適切でないものは 3(for i in range(1, 3):) です。
- 理由: range(1, 3) では [1, 2] の2つの値しか生成されないため、ループは2回しか実行されません。
- range の構文
range(start, stop, step)- start: 開始値(省略すると0)。
- stop: 終了値(stop は含まれない)。
- step: 増加値(省略すると1)。
- 適切かどうかの判定方法
- range() が生成する値を確認し、その要素数を数えることで繰り返し回数が分かります。
- 他のケースでも同じ方法で適切性を確認できます。
次回は…
次回は「008_Pythonエンジニア認定基礎試験4-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/