Pythonで条件分岐をネストする方法!ifの中にifを書く多段条件の基本
生徒
「Pythonで複雑な条件をチェックしたいときって、どうやって書けばいいんですか?」
先生
「そういうときは、『ネスト』といって、if文の中にもう一つif文を書く方法が使えます。」
生徒
「ifの中にifを書くって、どういう意味なんですか?どんなときに使うんですか?」
先生
「では、Pythonでの条件分岐のネスト方法を、初心者にもわかるように説明していきましょう!」
1. Pythonの条件分岐とは?
まず、条件分岐(じょうけんぶんき)とは、ある条件に応じて処理を変える命令のことです。たとえば、「もし雨が降っていたら傘を持つ」というように、状況に応じて行動を変える考え方です。
Pythonでは、if文という命令を使って条件分岐を表現します。次のように書きます。
weather = "rain"
if weather == "rain":
print("傘を持っていこう!")
2. ネストされたif文(多段の条件)とは?
ネストとは「入れ子(いれこ)」という意味で、if文の中にさらにif文を書くことを指します。これを使うことで、「もしAなら、さらにBもチェックする」というような複雑な条件を表現できます。
たとえば、「雨が降っていて、しかも気温が低いならコートを着よう」という条件は、次のようにネストで書けます。
weather = "rain"
temperature = 10
if weather == "rain":
if temperature < 15:
print("傘とコートが必要です。")
このように、1つ目の条件が満たされたときに、2つ目の条件がチェックされます。
3. ネストif文の具体的な使い方をやさしく解説
ネストされたif文は、「さらに詳しく条件を分けたいとき」にとても便利です。ここでは、年齢と性別を使った例を紹介します。
age = 20
gender = "女性"
if age >= 18:
if gender == "女性":
print("女性の大人です。")
この例では、「18歳以上」であることを最初に確認して、そのあとに「女性」であるかをチェックしています。両方の条件を満たしたときだけ、メッセージが表示されます。
4. ネストを使うときの注意点
ネストを使うときは、インデント(行の先頭の空白)に注意しましょう。Pythonでは、インデントがとても大切です。正しくインデントしないとエラーになります。
たとえば、次のようにインデントがズレていると、Pythonはどこまでがif文の中か分からなくなります。
# 正しくない例(インデントがバラバラ)
age = 20
gender = "女性"
if age >= 18:
print("これは正しくないインデントです。")
if gender == "女性":
print("これもダメです。")
このような場合、IndentationErrorというエラーが出るので、必ず同じ数の半角スペース(通常は4つ)でそろえてください。
5. ネストifの代わりに論理演算子を使う方法もある
ネストを使うとコードが深くなって読みにくくなることがあります。そんなときは、andという論理演算子(ろんりえんざんし)を使って、条件を一行で書くこともできます。
たとえば、先ほどの「雨が降っていて、しかも気温が低い」なら、次のように書けます。
weather = "rain"
temperature = 10
if weather == "rain" and temperature < 15:
print("傘とコートが必要です。")
ネストと結果は同じですが、スッキリ書けるのがメリットです。ただし、条件が複雑になりすぎると逆に読みにくくなるので、場面によって使い分けましょう。
6. if文を3段階以上でネストすることもできる?
はい、Pythonでは、if文の中にif文をいくつでも入れることができます。これを「多段ネスト(ただんねすと)」といいます。
例として、「学生で、18歳以上で、しかも女性だったら」といった3つの条件をチェックする例を見てみましょう。
role = "学生"
age = 18
gender = "女性"
if role == "学生":
if age >= 18:
if gender == "女性":
print("18歳以上の女性の学生です。")
このように、順番に条件をチェックすることで、より細かい分岐ができます。ただし、段数が増えすぎると読みづらくなるので、注意しましょう。
7. 実行結果を確認してみよう
先ほどの3段ネストのコードを実行すると、次のように表示されます。
18歳以上の女性の学生です。
8. ネストされた条件分岐はいつ使う?
ネストif文は、「ある条件を満たしたときに、さらに別の条件をチェックしたい」ときに使います。
- 会員登録で「大人かつ女性」のような限定的な条件
- ゲームで「レベルが高く、アイテムも持っているときだけ開く扉」
- アンケートで「性別と年齢で違うメッセージを出す」など
初心者のうちは少し難しく感じるかもしれませんが、例を見ながら繰り返すことで、だんだん理解できるようになります。
まとめ
Pythonの条件分岐を深く理解するためには、if文のネストという考え方をしっかり身につけることがとても大切です。今回の記事では、条件分岐の基本から、多段のネストによる複雑な条件処理、そして論理演算子との使い分けまで、さまざまな観点から丁寧に学んできました。特に、条件を一つずつ順番にチェックしていくネストの仕組みは、実際のプログラム開発でも頻繁に登場する考え方です。例えば、天気や気温、性別や年齢、役割など複数の条件が絡む場合には、単純なif文では表現できない細やかな分岐が必要になります。そんなときにネストは力を発揮します。また、ネストが深くなりすぎると読みづらくなるため、場面によっては論理演算子を使って条件をまとめる方法も有効です。 さらに、Pythonではインデントが正しく統一されているかどうかが非常に重要で、インデントの乱れはそのままエラーに直結します。したがって、多段ネストを書くときほど、インデントへの意識が大切になります。プログラムは読みやすさが品質に直結するため、他の人が見ても理解しやすいように丁寧に書く習慣が大切です。 また、学習の段階では、実際に手を動かして条件を変えたり、ネストの段数を調整したりして、動作を確かめながら理解を深めることがとても効果的です。たとえば、条件に別の要素を加えてみたり、条件を逆にしてみたりすることで、if文の仕組みがより立体的に見えるようになります。特に、初心者にありがちな「なぜこの結果になるのか分からない」という疑問も、条件を細かく分けて確認することで解消しやすくなります。 以下に、ネストされた条件分岐の復習として、今回の内容を踏まえたサンプルプログラムを掲載します。Pythonで条件分岐を扱う際の参考として、ぜひ手元で実行して動作を確認してみてください。
サンプルプログラム(復習用)
role = "社会人"
age = 25
weather = "rain"
if role == "社会人":
if age >= 20:
if weather == "rain":
print("傘を忘れずに持っていきましょう。")
else:
print("天気に気をつけてお仕事頑張りましょう。")
else:
print("若い社会人ですね。体調に気を付けてください。")
else:
print("状況に応じた行動を心がけましょう。")
このように、多段のif文は、複数の条件が重なり合う現実の判断をプログラムに落とし込むために非常に便利です。条件の意味が明確になるように変数名を工夫したり、必要に応じて論理演算子を活用したりすることで、読みやすいコードを書くことができます。そして、実際にコードを触りながら理解を深めていくことで、より確実にスキルとして身についていきます。
生徒
「今日の内容で、ネストされたif文がどういうものなのか、ようやく分かってきました!条件を細かく分けて処理できるのって便利ですね。」
先生
「そうですね。現実の判断は複雑なので、プログラムでも細やかな分岐が必要になることが多いです。ネストはそのための自然な発想なんですよ。」
生徒
「ただ、ネストが深くなると読みにくくなるっていうのは確かに感じました。インデントがズレたらすぐエラーになるのも怖いです。」
先生
「だからこそ、条件を整理して書いたり、必要に応じて論理演算子を使ったりして工夫することが大切です。慣れると自然に読みやすいコードが書けるようになりますよ。」
生徒
「はい!これからは条件分岐を書くとき、ネストと論理演算子の使い分けも意識して練習します!」