こんばんは。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(0、0.0、0jなど)は偽(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
出典:
【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なので実行される。
この理解で合ってるのでしょうか?
こんどエンジニアの友達に聞いてみようと思います。
これが独学の落とし穴なのか...