見出し画像

30日Python #6 もし、この値だったら(if)

「読むデータ」は、臨床医・医学研究者のための、Pythonと機械学習の連載。プログラミングの技術を身につけることから始め、自分のデータを「読み解く」力を鍛える。今回の#6では、条件によって処理を分ける「条件分岐(if)」を学ぶ。基準値を超えた患者だけを見つける、その第一歩だ。所要時間は5分。読むのに3分、手を動かすのに2分。


全員が、同じ扱いではない

前回、リストの中身を一つずつ処理できるようになった。だが臨床では、全員を同じように扱うわけではない。

採血の結果に目を通すとき、私たちは無意識に線を引いている。「カリウムが5.5を超えていたら要注意」「血圧が140以上なら高い」。基準値と照らし、超えていれば手を止め、そうでなければ流す。

この「もし〜だったら」という枝分かれの判断を毎日くり返している。

同じことを、コンピュータにもさせたい。値を見て、条件に当てはまるときだけ処理する。そのしくみが、条件分岐の if である。


要点

  • 「if 条件: 」と書くと、その条件が成り立つときだけ、字下げした処理が実行される。

  • 条件には比較を使う。「以上」は >=、「より大きい」は >、「等しい」は ==(イコールを2つ重ねる)。

  • else を添えれば、「そうでなければ」の処理も書ける。for と組み合わせれば、全員から条件に合う人だけを拾える。


1. 条件が成り立つときだけ、動かす

新しいセルに、こう書いて実行してみよう。

k = 5.8
if k >= 5.5:
    print("高カリウム血症の疑い")

これを実行すると

高カリウム血症の疑い

と表示される。if k >= 5.5: は「もし k が5.5以上なら」という意味。条件が成り立つので、字下げした print が実行された。

ためしに k = 4.2 に変えて実行すると、今度は何も表示されない。

k = 4.2
if k >= 5.5:
    print("高カリウム血症の疑い")

条件に当てはまらないので、字下げの中身が飛ばされたのだ。if も for と同じく、字下げが「条件に当てはまったとき実行する範囲」を示す。

なお、等しいかを調べるときは == とイコールを2つ重ねる。一つの = は「箱に入れる」(第2回)で使ってしまったので、比較の際にはイコールを2つ重ねることで区別されている。

2. そうでなければ、を加える

「当てはまるとき」と「そうでないとき」で処理を分けるには、else を使う。

bp = 130
if bp >= 140:
    print("高い")
else:
    print("基準内")

bp は130なので、条件に当てはまらず else の側

基準内

が表示される。if と else、2つの道のどちらか一方が必ず表示される。

3. 繰り返しと、組み合わせる

ここからが本題だ。前回の for と組み合わせると、「全員の中から、条件に合う人だけを拾う」ことができる。

bp_list = [120, 145, 138, 162]
for bp in bp_list:
    if bp >= 140:
        print(bp)

を実行すると

145
162

4人分の血圧から、140以上の2人だけが表示された。for で一人ずつ取り出し、if で条件を確かめ、当てはまる人だけ print する。字下げが2段になっているのは、「繰り返しの中の、さらに条件の中」という入れ子を表している。

これは、何千人分のデータから基準を超えた患者を抽出する処理の、最も素朴な原型だ。実際にデータを扱うとき、この考え方がまたそのまま必ず生きてくる。


今日の実習(2分)

新しいセルで、次をやってみよう。

  1. age = 70 を用意し、if age >= 65: のときだけ print("高齢") と表示させる。

  2. else を加えて、65未満なら print("非高齢") と出るようにし、age の値を変えて両方の道を試す。

  3. 余裕があれば、age_list = [60, 72, 45, 80] を for で回し、65以上の人だけ表示させてみる。

字下げの段数(if だけなら1段、for の中の if なら2段)には、特に意識して、気をつけよう。


今日のまとめ

if は、条件によって処理を分けるしくみ。for と組み合わせれば、大勢の中から基準に合う人だけを拾い出せる。臨床で毎日くり返している「もし〜だったら」という判断を、コンピュータに肩代わりさせることができる。その入り口に立てた。


次回、第7回「ひとまとまりの作業に、名前をつける」

よく使う処理をまとめて呼び出せる「関数」を学ぶ。基礎編も、いよいよ終盤だ。

いいなと思ったら応援しよう!