ど文系の中学校英語教員がプログラミング言語Pythonを学んでみた 12日目 if1: / TrueとFalseについての巻

Thursday, 5 March 2020

プログラミングとPython

 前回、バイブルである、『退屈なことはPythonにやらせよう』をちゃんと学習の原則に従ってやり直すことを決意しました。

 p.23の2章からスタート。「入力しましょう」、とか「試してみましょう」とあったら、まずいう通りに手を動かしてやってみましょう。頭の中で考えてるだけよりはるかにクリアになってきます。これをサボってはいけません。

 で、p.49ですが、以下のコードの話し。

 はじめ、このnot nameの意味がよくわかりませんでした。だって、whileって例えばwhile A = B: みたいに後ろに式が来ると思っていたから。でも、この説明によると、
while not name: は、while name != 0 と同じ意味らしい。
 
 同様に、if num_of_guests: も、if num_of_guests != 0:と同じ意味で、「if num_of_gestsが0でないなら」という意味らしい。え?最初の方は、name = ""とあったから納得だけど、こっちは何で?

 なんでも、「ブール型以外に条件式としてTrueやFalseと同等とみなされるデータ型があります。0や""(空文字)を条件式として用いるとFalseとみなされ、他の値ならTrueとみなされます」「num_of_guestsの値が0でなければ、条件式はTrueとみなされるので、(ifの)プログラムは実行されます」とあります。うーややこしい。わからない。

 先輩にききました。以下説明。

 まず、Trueは1のこと、Falseは0のことです。

で、例えば、

になる。

 そして、if 1: というのは、「もしTrue」ならということ。

 もう一度問題のコードをみると、

となっている。つまり、
int(input())で0を打つと、num_of_guestsが0になるということであり、その結果こいつがFalseになること。

 で、ifとは、「条件式がTrueのとき実行され、Falseならスキップされる」(p.31)なのだ。だから、ここで0が打たれると、ifプログラムはスキップされると。

 なるほどー!

 そういうことかと思いつつ、自分の頭の鈍さにショックをうける。

 こっちの方が読みやすいというが、私は慣れるまで時間がかかりそうです。