Python日記5 for文と空文字列

こんばんは。Python日記5日目です。

<今日やったこと>
Lesson 34 for文と空文字列


<分かりづらかったこと>
・変数の中身を直接判定する書き方

name = ''
if name: #空文字のため、if文の条件に合致しない。 
    print('名前は', name, 'です。')

name = ''
if not name: #空文字列の場合。if文の条件に合致する。
    print('名前が設定されていません。')

#「ユーザーが入力してくれなかった」ことを確認する為などに使う。

これがよく理解できませんでした。


なんでnameの前にnotを置かないと、2行目のprintが実行されないんだ?
となってしまう。


おそらくここで理解すべきことは、
①空文字列=False
②if文の意味していること
③notの意味していること
だと思われます。


①空文字列=False

数値型の場合は0(00.00jなど)は偽(false)、0以外は真(true)
文字列型の場合は空文字列("")は偽(false)、""以外は真(true)
空のタプル()、空のリスト[]、空のディクショナリ{}は偽(false)

出典:
真(true)と偽(false) - 条件分岐 - Python入門 



②if文の意味していること。

if `条件式1`:
    `条件式1がTrueのときに行う処理`
elif `条件式2`:
    `条件式1がFalseで条件式2がTrueのときに行う処理`
elif `条件式3`:
    `条件式1, 2がFalseで条件式3がTrueのときに行う処理`
...
else:
    `すべての条件式がFalseのときに行う処理`

出典:
Pythonのif文による条件分岐の書き方 | Python / note.nkmk.me




③notの意味していること
https://s3-ap-northeast-1.amazonaws.com/samurai-blog-media/blog/wp-content/uploads/2017/10/2017-10-11-640x157.png

出典:
【Python入門】if文でorやand、notを使ってみよう! | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト




<自分の理解の仕方>
最初のコードに戻ると、

name = ''
if not name: #空文字列の場合。if文の条件に合致する。
    print('名前が設定されていません。')

01 name変数は空文字列→False
02 if 条件式1 not(False) name(False)→FalseとFalseでTrueになる。
03 printは条件式1がTrueなので実行される。

この理解で合ってるのでしょうか?
こんどエンジニアの友達に聞いてみようと思います。
これが独学の落とし穴なのか...