空の値をチェックする

Python学習【365日チャレンジ!】35日目のマスターU(@Udemy11)です。

かなり前の漫画ですが、小林まこと先生の「柔道部物語」という漫画があり、その主人公が三五十五(さんごじゅうご)という名前でした。

柔道部物語

中学校では吹奏楽部だった少年が、高校に入学したときにひょんなことから柔道部に入ってしまい、地獄のようなしごきを受けながらも柔道の楽しさを見つけ、最終的に全国制覇するまでのストーリーです。
ほんとめっちゃおもしろくてはまってたんですよね。

Python学習【365日チャレンジ!】35日目なので、この数字をみるとついつい思い出してしまいました。

もう20年以上も前のことなのに、思い出すということはそれだけ集中してなんども読んでたってことなんでしょうね。

このくらいPython学習も頑張っていきますよ〜!

昨日の復習

昨日は、inとnotの使い方を学習しました。

inは、文字型でも整数型でもリスト型や他のタイプでも使うことが可能で、かなり使用頻度が高い演算子ですが、notの方は、否定の使い方なので、使い方に注意が必要だということでした。

a = [1, 2, 3, 4]
b = 1
if y in x:
    print('in listx')
 
is_ok = False
if not is_ok:
    print('is_ok is False')

大きい小さいを判断する比較演算子を否定するためにnotを使うと、【大きくなくない】と【大きい】を否定すことになり、普通に【小さい】を使ったほうがわかりやすいため、notの使い方に注意が必要です。

TrueとFalseの判断をするだけのBoolean型であれば、notを使ったほうがシンプルでわかりやすいコードになるということでしたね。

本日は、昨日の続きで、Boolean型の特徴を生かして、値が入っていないときのチェックの仕方を学習します。

自動的にBoolean型に

昨日の復習ですが、変数に【= Ture】と代入した場合のタイプはBoolean型になると学習しましたが、変数に数字や文字列などを代入した場合でもBoolean型のチェックをすることが可能です。

is_ok = True
if is_ok:
    print('OK')
else:
    print('NO')
 
#出力結果 'OK'

上記のコードの変数is_okにはTrueが代入されていますが、Falseを入れると出力結果は、’NO’になります。

変数is_okをprint出力すると、もちろんTrueが返されますが、変数is_okに数字を入れるとどうなるでしょうか?

is_ok = 1
if is_ok:
    print('OK')
else:
    print('NO')
 
#出力結果 'OK'
 
is_ok = 0
if is_ok:
    print('OK')
else:
    print('NO')
 
#出力結果 'NO'

変数に0以外の数字が入っていると、変数自体を条件にしたときは、Trueが返されます。

0が入っているときだけはFalseが返されるので、出力結果は、’NO’になります。

文字列の場合は、何かが入っているとTureが返されて、何も入っていない【”】を指定したときはFalseが返されます。

is_ok = 'My name is Mike'
if is_ok:
    print('OK')
else:
    print('NO')
 
#出力結果 'OK'
 
is_ok = ''
if is_ok:
    print('OK')
else:
    print('NO')
 
#出力結果 'NO'

リスト型やタプル型なども同じ

数字や文字列と同じように、リスト型やタプル型でも同じように空の状態ならFalseを返し、値が入っているときはTrueを返します。

is_ok = [1, 2, 3, 4, 5]
if is_ok:
    print('OK')
else:
    print('NO')
 
#出力結果 'OK'
 
is_ok = []
if is_ok:
    print('OK')
else:
    print('NO')
 
#出力結果 'NO'

タプル型も集合型も辞書型も同じように空の場合はFalseが返されるので、値が入っているかどうかの判断をするときに、if文に変数だけを指定する使い方があることを憶えておいたほうがいいでしょう。

Falseが返される条件

変数でFalseが返されるのは次のような場合です。

  • False(Bool型)
  • 0(int型)
  • 0.0(float型)
  • [](list型)
  • ()(tuple型)
  • {}(dict型)
  • set()(set型)

このことを知らない場合、リスト型に値が入っていないか判断しようとすると、次のような書き方をするかもしれません。

l = [1, 2, 3, 4, 5]
if len(l) > 0:
    print('exist')

でも、if文で変数自体を指定すれば、TrueかFalseが返されることを知っていれば、次のようにシンプルにコードを書くことができます。

l = [1, 2, 3, 4, 5]
if l:
    print('exist')

知っておいて損はない知識なので、憶えておいてください。

知ってるのと知らないのでは大きな違い

知ってるけど使わないのと、知らないから使わないのでは大きな違いがあります。

プログラミングは最終的に求める結果にたどり着くのは同じでも、通り道はたくさんあります。
その通り道をどのように描くかがプログラマーのセンスであり、よりシンプルでPCに負担のかからないコードのほうがスピードも速く、見た目もきれいです。

一つの通り道がわかったからといって、いつもその使い方をするのではなく、「これはどうだろう」、「こうすればどうなるんだろう」という好奇心を持って、学習していくと新しいことが発見できるかもしれませんよ。

それでは、今日はこのへんで、Good Python!