のべラボ.blog

Tech Blog | AWS や サーバーレスやコンテナ などなど

Python 3エンジニア認定 基礎試験の勉強記録:式の評価編

先週から引き続き、あらためて Python を体系的に勉強してみて学べたことや、メモとして残しておきたいことなどを記載していきます。今回は 式の評価編 です。

さしあたってのゴールは、Python 3エンジニア認定 基礎試験 の合格ですが、Python というプログラミング言語の仕様の全てや、試験合格のコツを解説するのではなく、あくまで自分が気づけたことのメモであることはご了承ください!


目次


整数の真偽評価

整数を対象にした真偽評価は、ふだん使うことがないので練習問題ではひっかかってしまいました 💦 よってメモしておきます。

次のサンプルコードを実行すると、どのような結果になるでしょう?

result1 = 0 and 2 and -1
result2 = 0 or  2 or  -1
print(result1)
print(result2)

これを理解するには 2 つのポイントがあります。

まず 1 つは、Python において 整数を真偽評価する場合、0 が 偽(False) であり、0以外が 真 (True) であるということです。

そしてもう1つは、andor をつかった真偽評価では、短絡評価となるという点です。

例えば、x and y の場合、まず x の評価を行い、結果が偽 (False) であれば、それ以上の評価は行わず、結果は x となります。 つまり、y の評価はパスされるわけです。もし x の評価が真 (True) の場合、y の評価も行われます。

ではそれをふまえて サンプル result1 = 0 and 2 and -1 を考えてみるとどうなるでしょう?

  • まず、0 and 20 を評価します。

  • 0 は、偽 (False) なので、そこで評価は終わり、結果は 0 となります。

  • つまり、print(result1) の結果は、0 となるわけです。

次に、or ですが、x or y の場合、まず x の評価を行い、結果が真 (True) であれば、それ以上の評価は行わず、結果は x となります。 つまり、y の評価はパスされるわけです。もし x の評価が偽 (False) の場合、y の評価も行われます。

では サンプル result2 = 0 or 2 or -1 を考えてみるとどうなるでしょう?

  • まず、0 or 20 を評価します。

  • 0 は、偽 (False) なので、次に 2 を評価します。

  • 2 は、真 (True) なので、そこで評価は終わり、結果は 2 となります。

  • つまり、print(result2) の結果は、2 となるわけです。

よって、サンプルコードの結果は、下記のようになります。

0
2

Python 以外のプログラミング言語の知識があると、0 は False か True かの判定で混乱するかもしれませんね。気をつけたいです。


set を使用した集合演算

set はコレクションの一種で、下記のような特性をもちます。

  • 要素を重複して保持しない
  • 要素の挿入時の順序や位置を記録しない(順不同)
  • 要素を追加する時は、add( ) を使う
    • list 型の場合は append ( ) を使うので、間違えて覚えないように気をつけましょう!

また set を使用した集合演算も可能です。次のサンプルコードがどのような結果になるか考えてみましょう。

myset1 = {'1','2','3','4','5','6','7','8','9'}
myset2 = {'2','4','6','8','a','b','c'}

print(myset1 - myset2)
print(myset1 & myset2)
print(myset1 | myset2)
print(myset1 ^ myset2) 

set を使用した集合演算では、演算子の意味を理解したうえでベン図で考えるとわかりやすいです。

3 行目の print(myset1 - myset2) ですが、これは 差集合 の演算を行っています。

ベン図で書くと、背景色がついている部分が結果となります。

4 行目の print(myset1 & myset2)積集合 の演算を行っています。

ベン図で書くと、背景色がついている部分、つまり myset1 と myset2 の両方に重複して存在している要素が結果となります。

5 行目の print(myset1 & myset2)和集合 の演算を行っています。

ベン図で書くと、背景色がついている部分、つまり myset1 と myset2 のすべての要素が結果となります。

6 行目の print(myset1 ^ myset2)対称差集合 の演算を行っています。

ベン図で書くと、背景色がついている部分、つまり 積集合を除く部分が結果となります。

以上、まとめるとサンプルコードの実行結果(例)は下記になります。

{'9', '5', '1', '7', '3'}
{'2', '4', '6', '8'}
{'4', '9', '5', 'c', '6', 'b', 'a', '8', '1', '2', '7', '3'}
{'5', 'c', 'a', '1', '7', '9', 'b', '3'}

上記はあくまで例です。set では要素の順序は維持されないので出力する時も要素の順は不確定ですが、要素の値としてはベン図の通りになっていますね。


先日、Python 3エンジニア認定 基礎試験 の申し込みを完了して受験日が確定しました!

普段、よく受けている AWS の認定とは申し込み方法が違い、慣れていないので少し苦労しましたが受験日が決まったので計画的に勉強を進めて合格を目指します!


/* -----codeの行番号----- */