KNIMEST’s diary

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

【Python学習帳】024_if 文による分岐

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

hdl.handle.net

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

第5章の制御構造の勉強中で、前回はwhile 文による繰り返しを学びました。

knimest.hatenablog.com

さて今回は

5.4 if 文による分岐

を学びます。

While文でよく使われるif文での分岐処理は既に前の回で体験はしています。

今回はChatGPTではなくBingチャットも使ってみました。

語句検索のような入力でサンプルコードを提供してくれるのですね。

日本語でとお願いしてみました。

私が加えるコメントなどなく、なかなかわかりやすい例を出してもらえました。

 

さて、

条件の代表的なものは数値の比較です.比較するための演算子として次のものが用意されています.

http://hdl.handle.net/2433/265459

「等しい」を判定する演算子は等号2つ(==) です.間違いやすいので注意しまし ょう.

また,浮動小数点数(float)は多くの場合,近似値を扱いますので,「等しい」という比較は予期せぬ振る舞いをする可能性があります.これの使用を避け,不等号で判断するようにしてください.

文字列でも条件の設定は出来ますね。

「in」で左辺が右辺の文字列に含まれているかどうかを調べることができます.
例えば
 'a' in 'abc'
に対して
 True
が得られます.

実行結果まで出してくれるのかと感心したのですが、実際にはprintされるのはHello Worldが一回だけですね。Chatは間違えることもあるので自分で確認することって大事です。

また、実際のループ処理は

Xからoが一つも無くなる“rld”まで実行されて終了する様です。

 

文字列を変えて確認してみました。

どうでもいいような 例だけど。

 

さて、遊び過ぎたので次へ。

複数の条件を合成するために論理演算子 「and」,「or」,「not」が用意されていま す.

Python では演算子に優先順位が定義されており,
● 算術演算は比較演算よりも優先,
● 比較演算は論理演算よりも優先
されます.プログラムを読みやすくするためには () で明示的に優先順位を示した方がいいでしょう.例えば
    a == 1 and b != 0

より以下のほうが動作は同じですが,読みやすいでしょう

    (a == 1) and (b != 0)

上記の読みやすい表現というのは本当に大切なことだと思っています。

If文って上記の通り多種多様に条件設定できます。
さらに

if 文は条件が成立している場合のみ与えられたブロックを実行するもののほか,成立しない場合 (else) に実行するブロックを指定するもの,成立しない場合にさらに別の条件を検査するもの (elif, else if の意味) など,いくつかのパターンがあります

ということで複雑な条件分岐が可能な分、後で読み返して一体どんな分岐かさっぱり分からなくなることもありうるってことです。

あれ、意外にすっきりしてるかも。こういうのを数秒で書いてくれるのはありがたいですよね。敢えてさらに複雑な例を書いてくださいって頼んでみました。

複雑だ。

ただ最小値を求めるif文なら下記の通りでした。

あるいはifすら使わないで

自分が書くときにちゃんと簡潔で効率よいコードが書けるだろうかと悩ましく思いました。

ちょっと寄り道が過ぎました。
次回は「if 文の入れ子」など学びます。いくらでも複雑にできちゃうんですよね…

knimest.hatenablog.com