これまでのプログラムは、書かれたコードを上から下へ、一本道をまっすぐ進むだけでしたね。でも、私たちの日常を思い浮かべてみてください。「もし雨が降っていたら、傘を持っていく」「もしお腹が空いていたら、ご飯を食べる」というように、私たちは常に状況に応じて行動を変えています。
今回は、プログラムにそんな「もし○○だったら、△△する」という、状況判断の能力を与える魔法、「条件分岐」を学んでいきます。この章を終える頃には、あなたのプログラムは単なる命令の実行者から、賢い判断ができるパートナーへと進化しますよ!
プログラムの流れをコントロールするということ
プログラムは、一つ一つの命令文、これを「文(ぶん)」と呼びますが、その集まりでできています。通常、これらの文は記述された順に実行されます。
しかし、時には特定の条件の時だけ実行したい文や、条件によって実行する文を変えたい場合がありますよね。このように、プログラムの実行の流れを意図的に変える仕組みのことを「制御構造(せいぎょこうぞう)」と呼びます。
今回学ぶ「条件分岐」は、この制御構造の最も基本的で重要なものの一つです。さあ、プログラムの流れを自由に操るための第一歩を踏み出しましょう!
「もし~なら」を実現するif文
条件分岐の基本となるのがif
文です。英語の "if" と同じで、「もし~ならば、...する」という意味を表します。
その構造は非常にシンプルです。
if 条件式:
条件が満たされた(真)場合に実行する処理
if
の後に判断の基準となる「条件式」を書き、その末尾には必ず:
(コロン)をつけます。そして次の行から、条件が満たされたときに実行したい処理を、少し字下げ(インデント)して書きます。この字下げが「この処理はif文の一部ですよ」という目印になる、Pythonの非常に重要なルールです!
例えば、テストの点数が60点以上なら「合格」と表示するプログラムを見てみましょう。
score = 85
if score >= 60:
print("合格です!おめでとうございます。")
このコードでは、まず変数scoreに85を代入しています。
次にif文でscore >= 60という条件式を評価します。85は60以上なので、この条件は満たされます(専門用語では「真(しん)」と言います)。
条件が真なので、字下げされたprint文が実行され、画面に「合格です!おめでとうございます。」と表示される、という仕組みです。
もしscore
が50
だったら、条件は満たされない(「偽(ぎ)」と言います)ので、print
文は実行されず、プログラムは何も表示せずに終了します。
TrueかFalseか?コンピュータの判断基準
if
文が使っている「条件式」は、コンピュータにとって「Yes」か「No」か、つまり「真(True)」か「偽(False)」かのどちらか一方の答えしか出ない式のことを指します。
この判断のために使われるのが「比較演算子(ひかくえんざんし)」です。数学で習った等号や不等号と似ていますが、少し違う記号もあるのでここでしっかり覚えましょう!
意味 | 演算子 | 例 (age = 20) | 結果 |
等しい | == | age == 20 | True |
等しくない | != | age != 20 | False |
より大きい | > | age > 20 | False |
より小さい | < | age < 20 | False |
以上 | >= | age >= 20 | True |
以下 | <= | age <= 20 | True |
ここで絶対に注意してほしいのが、=
と==
の違いです。
=
は「代入」を意味します。x = 5
は「xという変数に5を入れる」という命令です。==
は「比較」を意味します。x == 5
は「xの中身は5と等しいですか?」という質問です。
これを間違えると、プログラムは全く意図通りに動かなくなってしまうので、しっかり区別してくださいね!
判断のバリエーションを増やそう!
「もし~なら」だけでなく、「~でなかったら」「もし~ならA、そうでなくBならC、どちらでもなければD」のように、もっと複雑な判断をさせたい時もありますよね。そのための構文もちゃんと用意されています。
if-else構文:「もし~なら、さもなければ」
条件が満たされなかった場合に、必ず何か別の処理を実行させたい。そんな時に使うのがelse
です。
age = 18
if age >= 20:
print("お酒をどうぞ。")
else:
print("20歳になってからお越しください。")
このプログラムでは、age
は18
なのでage >= 20
という条件は満たされません(偽)。すると、if
のブロックは無視され、else:
に続くブロックが実行されます。結果として「20歳になってからお越しください。」と表示されます。
if-elif-else構文:3つ以上の選択肢
選択肢が3つ以上ある場合はどうでしょう?そんな時はelif
(else if の略)の出番です。
elif
を使うと、最初のif
の条件が偽だった場合に、さらに別の条件で判断を続けることができます。
score = 75
if score >= 90:
print("評価はSです。素晴らしい!")
elif score >= 80:
print("評価はAです。優秀です。")
elif score >= 70:
print("評価はBです。良い調子ですね。")
else:
print("評価はCです。次回頑張りましょう!")
このコードは、上から順番に条件をチェックしていきます。
score >= 90
? → 75なので偽。次に進む。score >= 80
? → 75なので偽。次に進む。- score >= 70? → 75なので真!ここの処理を実行。結果として「評価はBです。良い調子ですね。」と表示されます。elifの条件が一度でも真になったら、それ以降のelifやelseはすべて無視される、という点もポイントです。
まとめ:プログラムに知性を与えよう!
お疲れ様でした!この章では、プログラムの流れを自在に操る「条件分岐」について学びました。
- if文: 「もし~なら」という基本的な条件判断を行う。
- 比較演算子:
==
や>
など、条件式の判断基準となる記号。 - インデント: 字下げによって、処理のまとまりを示すPythonの重要なルール。
- if-else: 「もし~なら、そうでなければ」という2択の分岐。
- if-elif-else: 3つ以上の選択肢を持つ、より複雑な分岐。
if
文をマスターしたあなたは、もはやプログラムに「知性」を与える方法を手に入れたと言っても過言ではありません。
さて、状況に応じて処理を変えることはできるようになりました。ですが、「同じ処理を100回繰り返したい」といった場合はどうでしょう?print
文を100行書くのは大変ですよね。
次の章では、面倒な繰り返し処理をコンピュータに自動で実行させる、もう一つの重要な制御構造「繰り返し」について学んでいきます。プログラミングの効率が、劇的にアップしますよ!ぜひ、楽しみにしていてくださいね。
4章. 繰り返しで面倒な作業を秒殺しよう
まとめができたら、アウトプットとして演習問題にチャレンジしましょう。