あとりえSoeru

あとりえSoeruのブログ記事「Pythonの書き方(PHP中級者向け) その3」です。

あとりえSoeruのつぶやきブログ

Pythonの書き方(PHP中級者向け) その3

2018年11月12日

こんばんは。
今日は真・偽(True・False)がPythonでどう扱われるかを勉強していきたいと思っています。
部屋のスイッチにオン・オフがあるように、プログラミングでは2択でどう動くのか設定することがしばしばあります。
真偽リラテル(リラテルについては前回参照)は、スイッチのオン・オフに当たります。
真がTrue、偽がFalseです。そしてTrue・Falseは数字に言い替える事が出来てTrueが1,Falseが0です。

真判定には「変数」偽判定には「not 変数」を使う

if構文で真判定するには変数そのもの、偽判定するには「not 変数」と記入します。

真判定の例

var = 1
if(var):
    print("変数varはTrue")
else:
    print("変数varはFalse")

「変数varはTrue」と返ってくるので狙った通りに動きました。

偽判定の例

var = 0
if(not var)
    print("変数varはFalse")
else:
    print("変数varはTrue")

「変数varはFalse」と返ってくるので狙った通りに動きました。

空の値は偽

Falseや0以外にも偽とされるものがありますので紹介しておきます。

要素
0 数列で整数のゼロ
0.0 数列で小数点数のゼロ
""又は'' 空の文字列
[] 空のリスト
() 空のダブル
{} 空の辞書
set() 空の集合
None 値が存在しない

真偽判定をもっと知りたいので色々試してみました。

以下の文は真偽判定について掘り下げた文章になります。
プログラミングをするには不要な情報なので読まなくても問題ありません。
ただの興味で色々試してみた結果をつらつらと書いていきます。
まずはvarに0を代入して、真偽を判定してみたいと思います。
「偽」と表示されれば狙った通り動作していることになります。

var = 0
if(××××):
    print("変数varは偽です")
else:
    print("変数varは真です")

上の「××××」の部分に入れてダメだった文・OKだった文を紹介します。

ダメだった例

×var is False
×var is ""

正しく動作した例

〇not var
〇var is 0
〇var < 1

これは気になる結果が出ました。
下の(not var)が正しいようです。正しく動作した例の下の二つに関しては完全に数字として判断しているので真偽判定と言えません。
ただ、varが数字だった場合var is Falseで真偽判定することはできないようですね。
次に、varにFalseを代入して正しく動作するか確認していきましょう。

var = False
if(××××):
    print("変数varは偽です")
else:
    print("変数varは真です")

ただvar=0をFalseに変えただけです。
真偽判定が出来るのでしょうか。

ダメだった例

×var is 0
×var is ""

正しく動作した例

〇var is False
〇not var
〇var < 1

これはおもしろい結果が出ましたね。
真偽判定をするには「var < 1」でも正しく動作するんでしょうか。
ちなみに空文字を偽を表すのでそちらでも試してみましょう。

var = ""
if(var < 1):
    print("変数varは偽です")
else:
    print("変数varは真です")

これは「変数varは真です」と出てしまいました。
なので真偽判定には「not 変数」を使用しましょう。