KNIMEST’s diary

KNIME使いがPythonも使いたくて勉強中

【Python学習帳】025_if 文の入れ子とPEP8

初学者を対象としている京都大学の無料Python教材の学習中です。
「プログラミング演習 Python 2021」
Version2021_10_08_01.pdf

hdl.handle.net

CC-BY-NC-NDライセンスに従って引用します。

第5章の制御構造の勉強中で、if 文の基礎を学んでいます。

knimest.hatenablog.com

さて今回も「5.4 if 文による分岐」より

5.4.3 if 文の入れ子

を学びます。

 

サンプルコードで示される通り、複数条件での分岐処理をする際にはいくつか表現方法があります。

複数条件をandなど論理演算子で繋ぐ書き方は前回に学びました (p5-8.py)。

下記のように複数回のifを入れ子に使う書き方もあります (p5-9.py)。

上記ぐらいシンプルな例ならどんな書き方でも読めなくはないでしょうが、Pythonでの表現方法にはかなりの自由度があるので、将来の自分も含めて読みやすいコードを書くには一般的なルールを守った方が良いそうです。

atmarkit.itmedia.co.jp

以下は余談となりますが、上記のサイトから引用しつつ、可読性が高くて一貫性のあるPythonコードを書くための指針とされるPEP 8を学んでみます。

PEP8については命名規則に関して一度紹介済です。

knimest.hatenablog.com

Pythonは誰が書いても同じようなコードとなりやすいように作られた言語だが、そうはいってもコードの書き方そのものが言語仕様上でガチガチに定められているわけではない。例えば、if文を例に取れば、同じコードでも次のような書き方ができる。

https://atmarkit.itmedia.co.jp/ait/articles/1912/10/news045.html

PEP8では「複合文を1行にまとめない」という基本ルールがあるそうで、上記のようにシンプルな内容の時だけは一行にまとめてもよいとのこと。

ただし、節が複数あったり、本体が複数行で構成されたりするときには、使用しないことが強く推奨されている。以下にダメな例を示す。

https://atmarkit.itmedia.co.jp/ait/articles/1912/10/news045.html

なるほど、上記だとやや読みにくいかもと私も感じました。Bing Chatに相談したところ下記の回答でした。

Bing Chatだと情報の出所を詳細情報として正しいリンク先で示してくれるのがありがたいです。今回の引用元の記事も2番目にしっかり紹介されていました。

そして適切な改行とインデント、確かに読みやすいと思いました。

 

さて教材に戻って

演習 5-13 エラーを体験する(4).

if 文内で比較演算子 == の代わりに誤って代入演算 = を書いてしまうことはよ

くある間違いの一つです.

はい、私も既に何回か間違えました。

上述のp5-9.pyを例としてエラーをわざと発生させてみます。

結果として

この例では次の図のように「Invalid syntax (文法的に不適切)」というダイアログ が示され,該当箇所が赤く表示されます.

これでif文に関しての5.4節の学習を終えました。

次回は5.5節にてエラーへの対処を学びます。

knimest.hatenablog.com