Pythonエンジニア認定基礎検定の勉強で、ネットで無料で受けられる模擬試験を受けた。
https://diver.diveintocode.jp/exam
その中でこんな問題↓があり、少し理解に苦しんだ。
1 2 3 4 5 6 |
・以下のプログラムを実行した際の出力結果を選びなさい。 name1,name2,name3,name4= '', 'suzuki','tanaka','sato' selected_name = name1 or name2 or name3 or name4 print(selected_name) →正解: suzuki |
orの論理演算の結果がなんで「suzuki」なんだろう・・・といろいろ調査したところ、
- Pythonでは、数値や文字列の論理演算結果は、TrueやFalseが返されるのではなく、数値や文字列が返される
- Pythonの論理演算では、必ずしも論理演算部分の最後まで検討されるのではなく、答えが確定すると残りの計算はせず、判断の決め手となった値を返す
- 数値は0がFalse、0以外はTrueです。一方、文字列は空文字列(からもじれつ)はFalse、空文字列以外はTrueです
つまり、上記例題の場合、最初の”name1 or name2″の時点で、name2は空文字ではないので、Trueとが確定するので、name2のsuzukiが返されるということでした。
素人の私にとっては、使いどころがよくわからん言語仕様ですが、試験にでるので勉強がてら記事にしてみました!