if文の基本構造と条件式の書き方
if文は、Pythonで「条件によって処理を変える」ために使う構文です。
例えば、「もし年齢が20歳以上なら成人です」「もし点数が60点未満なら不合格です」といった判断をプログラムで表現できます。
まずは、if文の基本的な書き方と、条件をどのように表現するのかを学んでいきましょう。
【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング
if文の基本構文と実行フロー
if文は「もし〜なら」という条件分岐を表現する構文です。
基本的な形は「if 条件式:」です。条件式の後に、コロン(:)が必要なので注意しましょう。そして、次の行から4つのスペースでインデント(字下げ)して、実行したい処理を書きます。
条件がTrue(真)、つまり「条件を満たしている」場合にのみ、インデントされた部分の処理が実行されます。
出力結果
成人のネコですこの例では、ageが20以上という条件を満たしているため、「成人のネコです」と表示されているという形です。
条件式の書き方と比較演算子
条件式では、比較演算子を使って値の大小や等しいかどうかを判定します。
主な比較演算子は次の通りです。
- ==:等しい(注意:代入の=とは違います)
- !=:等しくない
- >:より大きい
- <:より小さい
- >=:以上
- <=:以下
数値だけでなく文字列の比較もできます。
出力結果
わんわんこの例では、animalという変数の値が「イヌ」と等しいかを==で確認しています。
elseとelifによる分岐処理
これまで学んだif文だけでは、「条件を満たす場合」の処理しか書けません。
しかし実際のプログラムでは、「条件を満たさない場合はこうする」「複数の条件を順番に確認したい」といった場面がよくあります。そんなときに使うのが、elseとelifです。
elseとelifを使いこなすことで、より実用的なプログラムが作れるようになります。
elseによる条件不一致時の処理
elseは、if文の条件がFalse(偽)、つまり「条件を満たさなかった場合」に実行される処理を書くためのものです。
if文の後にelse文を書くことで、「条件を満たす場合」と「満たさない場合」の両方の処理を指定できます。
これにより、どんな場合でも必ず何かしらの処理が実行されるようになり、プログラムの安全性が高まるというメリットもあります。
出力結果
小さなゾウですこの例では、weightが10より大きくないため、if文の条件はFalseとなります。そのため、else以下の「小さなゾウです」が実行されます。
elifを用いた複数条件の分岐
elifは「else if(そうでない場合)」を短くした言葉で、複数の条件を順番にチェックしたいときに使います。
最初のif文の条件がFalseだった場合、次にelifの条件をチェックします。それもFalseなら次のelifへ、というように順番に確認していきます。どの条件にも当てはまらなかった場合は、最後のelseが実行されます。
重要なのは、条件は上から順番にチェックされるため、条件の並べ方が結果に影響するという点です。
出力結果
良いペンギンですこの例では、まずscore >= 90がチェックされますが、75は90以上ではないのでFalseです。次にscore >= 70がチェックされ、これがTrueなので「良いペンギンです」が表示されます。
それ以降の条件(else)はチェックされません。
複雑な条件式と演算子の活用
実際のプログラムでは、単純な条件だけでは対応できない場面がたくさんあります。
例えば、「気温が20度以上で、かつ湿度が70%未満なら快適」「犬または猫ならペット」といった、複数の条件を組み合わせた判断が必要になるケースです。
ここでは、そのような複雑な条件を表現する方法を学んでいきましょう。
and・orによる複数条件の組み合わせ
複数の条件を組み合わせたいときは、andやorという論理演算子を使います。
and演算子は、「すべての条件が満たされている場合」にTrueになります。
つまり、「AかつB」という意味です。
or演算子は、「いずれか1つでも条件が満たされている場合」にTrueになります。
つまり、「AまたはB」という意味です。
条件が複雑になる場合は、括弧()を使って優先順位を明確にすることも大切です。
出力結果
快適なウサギですこの例では、temperature > 20(気温が20度より高い)とhumidity < 70(湿度が70%未満)の両方がTrueなので、and演算子全体がTrueとなり、「快適なウサギです」と表示されています。
notによる条件の反転
not演算子は、条件の結果を逆にします。Trueだった条件をFalseに、Falseだった条件をTrueに変えることができるということです。
「〜でない場合」という条件を表現したいときに有用で、コードをより自然な表現にできるというメリットがあります。
例えば、「寝ていない場合」という条件は、notを使うことで簡潔に書けます。
出力結果
起きているクマですこの例では、is_sleepingがFalseなので、not is_sleepingはTrueになります。そのため、「起きているクマです」と表示されます。
入れ子のif文と読みやすさの工夫
if文の中に別のif文を書くことを、入れ子(ネスト)と呼びます。
複雑な条件分岐を表現できる便利な方法ですが、深くネストしすぎるとコードが読みにくくなります。一般的には、ネストは2〜3段階までに抑えることが推奨されています。
複雑になりすぎてしまいそうなときには、読みやすくする手段として、次のような方法を検討しましょう。
- 適切にインデント(字下げ)を行う
- ネストが深くなりすぎる場合は、関数に分割する
- and演算子で条件を組み合わせられないか考える
出力結果
大型哺乳類のライオンです入れ子構造のコード例です。
まずanimal_type == "哺乳類"をチェックし、それがTrueなら次にsize == "大型"をチェックします。両方がTrueなので、メッセージが表示されるという形です。
if animal_type == "哺乳類" and size == "大型":とand演算子を使って1つの条件にまとめることもできます。
一行で書けるif文の表現
Pythonには、シンプルな条件分岐を1行で書く方法があります。
通常のif文は複数行にわたって書きますが、「条件によって値を選ぶだけ」といった単純な処理であれば、1行でスッキリ書くことができます。
ただし、使いどころを間違えると逆に読みにくくなるため、適切な場面で使うことが大切です。
条件演算子(三項演算子)の基本
三項演算子は、条件によって異なる値を選ぶための書き方です。
「値1 if 条件 else 値2」という形で書きます。条件がTrueなら値1が、Falseなら値2が選ばれます。
この書き方は、変数に値を代入する際や、関数の引数として値を渡す場合によく使われます。シンプルな条件分岐であれば、コードを簡潔にまとめられるため便利です。
出力結果
子供のトラですこの例では、age > 5という条件がFalse(3は5より大きくない)なので、elseの後の「子供のトラです」がmessageに代入されます。
一行if文を使う際の注意点
一行if文は便利ですが、使いすぎるとコードが読みにくくなります。
避けるべきなのは、例えば次のようなケースです。
- 条件が複雑な場合(andやorがいくつもある)
- 処理が長い場合
- 三項演算子の中にさらに三項演算子を入れる場合
特に、チームで開発する場合は、他の人が読んでも理解しやすいコードを書くことが重要です。
デバッグの際にも、複数行に分かれている方がエラーの場所を特定しやすくなります。
出力結果
パンダは元気です基本的には、「シンプルな値の選択」なら一行if文、「複雑な処理」なら通常のif文という考え方で大丈夫です。
if文と関数の組み合わせ
関数の中でif文を使うと、より実用的で再利用しやすいプログラムが作れます。
例えば、同じ関数でも「引数として渡された値によって、異なる処理を行う」「条件によって、異なる結果を返す」といったことができるのです。
関数とif文を組み合わせることで、同じ処理を何度も書く必要がなくなり、プログラムの保守性も向上します。
関数内での条件分岐の実装例
関数の中でif文を使う場合、引数として受け取った値を条件判定に使うのが一般的です。
これにより、同じ関数でも引数の値によって異なる動作をさせることができます。
エラーが発生しそうな値が渡された場合の処理(エラーハンドリング)を含めることも重要です。
出力結果
にゃーにゃーこの例では、animal_soundという関数を定義しています。
引数animalの値によって、異なるメッセージを表示します。「ネコ」を渡すと、elif animal == "ネコ"の条件がTrueになるため、「にゃーにゃー」と表示されます。
もし「イヌ」でも「ネコ」でもない値が渡された場合は、elseの「不明な鳴き声」が表示されます。
returnとif文の組み合わせ
関数から値を返すとき、条件によって異なる値を返したい場合があります。
そんなときは、if文とreturn文を組み合わせます。return文が実行されると、その時点で関数の処理が終了するため、効率的なコードが書けます。
出力結果
カテゴリ: ペットこの例では、get_animal_categoryという関数が、動物の種類に応じてカテゴリ名を返します。
「イヌ」が引数として渡されると、最初のif文の条件animal in ["イヌ", "ネコ"]がTrueになります。そこでreturn "ペット"が実行され、関数はその時点で終了します。それ以降のelifやelseは実行されません。
返された値「ペット」はcategoryという変数に代入され、最後に「カテゴリ: ペット」と表示されるという形です。
ちなみに、in演算子を使うと、「値がリストの中に含まれているか」を簡単にチェックできます。
animal in ["イヌ", "ネコ"]は、「animalの値がイヌまたはネコのどちらかと一致するか」を確認しているということです。
よくある質問(Q&A)
Q: if文で文字列を比較するときの注意点は?
A: 文字列比較では大文字と小文字は区別されます。「Dog」と「dog」は異なる値として判定されるため、必要に応じてlower()メソッドなどを使って統一してから比較しましょう。
Q: 複数の値と一度に比較する方法は?
A: in演算子を使用します。「if animal in ["イヌ", "ネコ", "ウサギ"]」のように記述することで、複数の値との比較を簡潔に表現できます。
Q: 条件式でNoneをチェックする方法は?
A: 「is」演算子を使用します。「if value is None」または「if value is not None」と記述します。==演算子よりもisを使用することが推奨されています。
Q: if文の条件が長い場合の書き方は?
A: 括弧を使用して複数行に分割できます。論理演算子の前後で改行し、適切にインデントすることで可読性を保ちながら長い条件式を記述できます。
Q: 数値の範囲をチェックする簡潔な方法は?
A: Pythonでは連鎖比較という方法が使えます。
「10以上20以下」という範囲チェックを、if 10 <= age <= 20:のように、数学的な表記に近い形で書けます。これはPythonの便利な機能の1つです。
まとめ
if文は、条件によってプログラムの処理を変えるための基本的で重要な構文です。
この記事では、if文の基本的な書き方から、実践的な活用方法まで解説してきました。
最後に、重要なポイントをおさらいしましょう。
重要なポイント
- if文を使う際には、コロン(:)とインデントが必要
- 条件は上から順番にチェックされる
- 論理演算子を使うと、複雑な条件を表現できる
- シンプルな条件分岐の場合は三項演算子で簡潔に書ける
- returnで条件に応じた値を返すことができる
if文は、プログラミングの基礎中の基礎です。マスターすることができれば、できることは大きく広がります。
ぜひこの記事を参考に、if文を使ったプログラミングに挑戦してみましょう。
プログラミングをもっと体系的に学びたい方には、paizaラーニングがおすすめです。動画とテキストで効率よく学べ、実践的な課題を通じて、if文をはじめとするPythonの基礎から応用まで着実にスキルアップできます。