• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Python / Pythonのif文の使い方詳細!!基本的な使い方から仕様まで(if, elif, else, and, or, not, any, all, __bool__)

Pythonのif文の使い方詳細!!基本的な使い方から仕様まで(if, elif, else, and, or, not, any, all, __bool__)

1 if文の基本的な使い方
2 elif, elseを使用した分岐の追加
3 論理型(boolean)、空文字、空のリストなど
4 and、or、not、all、anyで複数の条件を繋げる
5 1行でif, elseを利用する
6 ネストしたif文の記載
7 __bool__を用いたクラスの実装(ifの仕様詳細)
8 セイウチ演算子の利用(python3.8以上)
9 関連記事

 

  • pythonのif文の基本的な実装方法
  • elif, elseを用いたif文の条件の追加
  • 論理型、空のリスト、空の文字列などの扱い
  • and, or, not, any, allの利用
  • 1行でのif, elseの利用
  • if文のネスト
  • __bool__の実装
  • セイウチ演算子

など、if文について言語仕様も含めて、詳細に解説しています。

 

[rtoc_mokuji title="" title_display="" heading="h3" list_h2_type="" list_h3_type="" display="" frame_design="" animation=""]

if文の基本的な使い方

if文とは、制御文の一種で、処理を分岐させ特定の条件の場合にのみある処理をさせたい場合に用いられます。

そして、pythonの場合は、if文は
if <条件式>:
<処理>
これでとりあえず実装できます。
  • if文の分岐による処理の概要(if文の分岐を満たす場合にのみ特定の処理が実行される)

条件に記述する内容は、以下のようなものがあります。

・if文の条件一覧

関数名 処理内容
○○ == ○○  左側の式と右側の式が等しい場合に、処理を実行
○○ != ○○  左側の式と右側の式が等しくない場合に、処理を実行
○○ < ○○  左側の数値が右側の数値よりも値が小さい場合に、処理を実行
○○ > ○○  左側の数値が右側の数値よりも値が大きい場合に、処理を実行
○○ <= ○○  左側の数値が右側の数値以下の場合に、処理を実行
○○ >= ○○  左側の数値が右側の数値以上の場合に、処理を実行
○○ in リスト タプルなど  左側の値が右側のリストやタプル内に存在する場合に、処理を実行
○○ not in リスト タプルなど  左側の値が右側のリストやタプル内に存在しない場合に、処理を実行

これらは、内部的には特殊メソッドが呼ばれています。

詳細は最後に説明します。

では、if文が実際にどのように実装されているのか見ていきましょう!

  • if文の実装例

Example

  • ifの後にインデント(空白)がない場合エラー
if 'A' == 'A':
print('A == A')

 

  • if文で等しいかどうか確認
if 'A' == 'A':
    print('A == A') # AとAは等しいので実行されるname = 'Taro'
if name == 'Taro':
    pass # nameにはTaroが入っているため中の処理が実行される
name = 'Taro'
if name != 'Taro':
    pass # nameはTaroではないため中の処理が実行される

 

  • if文で比較演算子を使用

age = 12
if age < 20:
    pass # ageは20より小さいので実行される

age = 12
if age > 20:
    pass # ageは20より大きくないので実行されない

age = 20 # ageに20を代入
if age <= 20:
    pass # ageは20以下なので実行される

age = 20
if age >= 20:
    pass # ageは20以上なので実行される

 

  • if文でinを使用

fruit = 'lemon'
if fruit in ('apple', 'banana', 'orange'):
    pass # fruit(apple)は()の中に存在しないので、実行されない

fruit = 'lemon'
if fruit in ('apple', 'banana', 'orange'):
    pass # fruit(apple)は()の中に存在しないので、実行される

 

このように、==, !=, <, >, <=, >=, in, not inなどの演算子を用いて、if文の条件を記載し、条件に応じて実行できるできないを分けることができます。

elif, elseを使用した分岐の追加

elif, elseを使うと分岐を追加することができます。

つまり、ifの条件を満たさない場合の別の条件としてelifで様々な条件を繋いでいくことができます。

  • elif, elseで様々な条件を繋いだ処理の概要

elifの条件は、ifの条件を満たさない場合しか確認されないません。

ifの条件を満たした場合、ifの条件内の処理が実行されて、elif, elseの処理は実行されませんので注意しましょう。

  • elif, elseの実装例

Example

  • elif, elseを使用したif文
age = 18
if age < 20: # ifの条件
    print('20未満')
elif age <= 60: # ifの条件を満たさない(20以上の場合)、条件を確認する
    print('20以上60以下')
else:
    print('60より大きい')

このように、if, elif, elseでifの条件を満たさない場合の処理を実装できます。

elifは1つだけでなく、複数つなぐこともできます。

論理型(boolean)、空文字、空のリストなど

論理型もif文の条件として用いられます。
この時は、特に条件式を記載せずに、変数名だけif文に置きます。そして、論理型の場合、Trueでは処理が実行されて、Falseでは処理は実行されません。
  • 論理型のif文

Example

  • 論理式をそのまま入れた場合のif文
var = True
if var: # varという変数がTrueの場合だけ、実行される(Falseの場合は実行されない)
    print('something')

 

また、空文字列の変数を直接if文において、条件分岐させることもできます。

  • 空文字列のif文

Example

  • 空文字列を使ったif文
msg = ''
if msg: # 空文字の場合、if文ではFalseと判定されて中の処理は実行されない。
    print('実行されない')

このように、空文字列の場合にはif文でFalseと判断され、中の処理は実行されません。

逆に何らかの文字列が入っている場合にはif文でTrueと判断され、中の処理は実行されます。

  • 中に文字が入っている文字列変数のif文

Example

  • 文字列が入った場合のif文
msg = 'Hello'
if msg:# 文字が入っている場合、if文ではTrueと判定されて中の処理は実行されない。
    print('実行される')

 

では、各クラス毎にどの場合はTrueと判断されて処理が実行され、どの場合はFalseと判断されて処理が実行されないのか見ていきましょう。

 

  • 型ごとの条件
型名 Trueとなる場合 Falseとなる場合
数値(int) 0以外の正と負の値 0
浮動小数点数(float) 0.0以外の正と負の値 0.0
文字列(str) 空でない文字列 空の文字列
リスト(list) 空でないリスト 空のリスト
タプル(tuple) 空でないタプル 空のタプル
辞書(dict) 空でない辞書 空の辞書
セット(set) 空でないセット 空のセット

 

  • 変数を直接ifにセットした場合

Example

  • listをそのまま使用したif文
list_a = [1, 2]
if list_a: # listの中には値が入っているので実行される
    print('実行される')
list_a = list() # 空のリスト
if list_a: # listは空なので実行されない
    print('実行されない')

and、or、not、all、anyで複数の条件を繋げる 

1. andを使用した場合(論理積)

○○ かつ ××

のような条件を判定することができます。

つまり、

Example

  • andを使用したif文
if (msg = 'Hello') and (color == 'red'):
    pass

と記述した場合、msgの値がHelloでcolorの値がredだとifの中の処理が実行されます。

2. orを使用した場合(論理和)

○○ または ××

のような条件を判定することができます。

つまり、

Example

  • andを使用したif文
if (msg = 'Hello') or (color == 'red'):
    pass

と記述した場合、msgの値がHelloまたは、colorの値がredだとifの中の処理が実行されます。

3. notを使用した場合(否定)

  • 指定した条件がFalseの場合だけ実行される

というふうになります。

例えば、以下のように利用します。

if not 条件式:

Example

  • notを使用したif文
if not 'apple' == 'lemon':
    pass # apple==lemonの条件が成立しない場合に実行される

if not age < 20:
    pass # age<20の条件が成立しない場合に実行される

if fruit not in fruits_list:
    pass # fruitがfruits_listの中に存在しない場合に実行される

4. allを使用した場合

allを利用した場合には、引数として指定したIterable(リスト、タプル等)なものが、全てTrueの場合のみ実行される。

  • allの例

Example

  • allを使用したif文
if all(['A'=='A', 21 > 12, 'A' != 'B']):
    pass # 'A' == 'A', 21 > 12, 'A' != 'B'は全てTrueのため実行される
if all(('A'=='A', 21 > 12, 'A'=='B')):
    pass # 'A' == 'A', 21 > 12はTrueだが、'A'=='B'はFalseのため実行されない

5. anyを使用した場合

anyを利用した場合には、引数として指定したIterable(リスト、タプル等)なものが、一つでもTrueの場合実行される。全てFalseの場合は実行されない。

  • anyの例

Example

  • anyを使用したif文
if any(['A'!='A', 21 <= 12, 'A'!='B']):
    pass # 'A' != 'A', 21 <= 12はFalseだが、'A' != 'B'はTrueのため実行される
if any(('A'!='A', 21 <= 12, 'A'=='B')):
    print('実行される') # 'A' != 'A', 21 <= 12, 'A' == 'B'は全てFalseのため実行されない

1行でif, elseを利用する 

1行で記載できるような簡単な文の場合には、

〇〇 if 条件式 else ××

のような形で記載して、条件式がTrueの場合には○○の処理を実行、Falseの場合には××の処理を実行するとすることができます。

  • 1行で記載したif else

Example

  • 1行のif文
a = 2
b = 330
# a > bの場合print('A')が実行され、それ以外a <= bの場合、print('B')が実行される。
print('A') if a > b else print('B')
# a > bの場合cにはa > bが、それ以外a <= bが格納される。
c = 'a > b' if a > b else 'a <= b'
print(c) # a <= b

ネストしたif文の記載 

if文をネストして複数条件を記載する場合には、ifの中にifを書いて行きます。
  • ifをネストした場合の書き方

Example

  • if文ネスト
if 条件1:
    if 条件2:
        pass# 条件1がTrueで条件2がTrueの場合の処理
    else:
        pass# 条件1がTrueで条件2がFalseの場合の処理
else:
    if 条件3:
        pass# 条件1がFalseで条件3がTrueの場合の処理
    else:
        pass# 条件1がFalseで条件3がFalseの場合の処理

 

__bool__を用いたクラスの実装(ifの仕様詳細)

ここからは、if文の詳細について解説します。

ifを実行した場合、対象のインスタンスの特殊メソッド__bool__が呼ばれます。

__bool__のメソッドの返り値がTrueだった場合には、if文の中の処理が実行され、Falseだった場合には、if文の中の処理は実行されないせす。

  • __bool__を利用した場合の書き方

Example

  • __bool__の実装
class ClassA:

    def __bool__(self):
        print('boolが呼ばれました')
        return True

a = ClassA()
if a: # ClassAの__bool__メソッドは、Trueが返されるので中の処理が実行される。
    pass

class Student:

    def __init__(self, age):
        self.age= age

    def __bool__(self):
        if self.age > 20: # self.ageが20より大きい場合にTrueを返す
            return True
    else:
            return False # self.ageが20以下の場合にTrueを返す

student = Student(21)
if student:
    pass # studentのself.ageは21で20より大きいため、__bool__でTrueが返され実行される

student = Student(12)
if student:
    pass # studentのself.ageは12で20以下のため、__bool__でFalseが返され実行されない

 

セイウチ演算子の利用(python3.8以上)

セイウチ演算子とは、python3.8以上から実装された機能で、変数への値の代入と比較を同時に行うことができる機能です。
以下のように記載します。

変数 := 値

:= がセイウチの牙を生やした形に似ているので、セイウチ演算子と呼ばれています。

例えば、以下のように記載すると、aに12を代入して、そのあとに10より大きいかどうか比較することができます。

Example

  • セイウチ演算子の例
if (a := 12) > 10:
    pass # aに12を入れて、10より大きいか見ている。10より大きいので中の処理は実行される

 

以上、if文について詳細に解説いたしました。

関連記事

Pythonの型ヒント:コレクション型とOptional型の使い方
Pythonの型ヒント:コレクション型とOptional型の…
Python型ヒントについて、変数と関数の引数と戻り値に付与する基本的な書き方について
Python型ヒントについて、変数と関数の引数と戻り値に付与…
Flaskでabortを用いてHTTPException例外を強制的に発生させる
Flaskでabortを用いてHTTPException例外…
Pythonエンジニアが選ぶPython入門者、初心者向けの本おすすめ10選
Pythonエンジニアが選ぶPython入門者、初心者向けの…
Flaskでデバッグをしてエラー解析する方法(debugパラメータ設定、VScodeでのデバッグ等)
Flaskでデバッグをしてエラー解析する方法(debugパラ…
WindowsでPython、Anaconda、VSCodeのインストールとPython開発環境を構築する方法
WindowsでPython、Anaconda、VSCode…

Primary Sidebar

人気記事

  • 1
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 2
    Python未経験だが、フリーランスの案件に採用さ…
  • 3
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 if文の基本的な使い方
2 elif, elseを使用した分岐の追加
3 論理型(boolean)、空文字、空のリストなど
4 and、or、not、all、anyで複数の条件を繋げる
5 1行でif, elseを利用する
6 ネストしたif文の記載
7 __bool__を用いたクラスの実装(ifの仕様詳細)
8 セイウチ演算子の利用(python3.8以上)
9 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Python講座
【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)
受講生3000人ほどの人気講座。<strong>Pythonの基礎から生成AI活用</strong>...
詳細 ▶

Footer

利用規約