特集PC技術

Pythonを学ぼう

 

第20回 条件分岐


1.条件分岐とは

これまでの回のプログラムは、上から順に実行してきました。
ですが、プログラムによっては、条件によって処理を分けたい時があります。
それが条件分岐であり、Pythonには条件分岐をするための「if文」という構文があります。

if文のように条件分岐する構文は、Pythonに限らず、他の言語にもあります。
ただし、Pythonは他の言語と異なり、インデントの深さでブロック範囲を決定するという
特徴があります。

2.if文の基礎

if文は次のように記述します。

if 条件式:
    条件が真の場合の処理


if文では、ifの後に空白を置いて条件式を記述し、最後にコロン(:)を記述します。
条件式が真になった場合、インデントをした後に記述した処理を実行します。
インデントは、タブでもスペースでもどちらでもかまいません。
使用方法は、次のプログラムを見てください。

# coding: utf-8

a = 2
# 条件が真の場合
if a > 1:
    print(1)
    print(2)

# 条件が為の場合
if a > 2:
    print(3)
    print(4)

実行結果

1
2

実行結果より、条件式が真になった場合、条件配下の処理を実行することがわかります。
条件式が為になった場合は、条件配下の処理を実行しないことがわかります。

3.else節

条件式が為になった場合の処理を実行するには、elseを使用して次のように記述します。

if 条件式:
    条件が真の場合の処理
else:
    条件が為の場合の処理


elseの後にはコロン(:)を記述します。
使用方法は、次のプログラムを見てください。

# coding: utf-8

a = 2
# 条件が真の場合
if a > 1:
    print(1)
else:
    print(2)

# 条件が為の場合
if a > 2:
    print(3)
else:
    print(4)

実行結果

1
4

4.elif節

条件が複数ある場合は、elifを使用して次のように記述します。

if 条件式①:
    条件式①が真の場合の処理
elif 条件式②:
    条件式②が真の場合の処理
else:
    上記すべての条件に当てはまらない場合の処理


elifは何度も使用できます。
条件式は上から順々に評価していき、条件が真になった場合に、その条件配下の処理を実行します。
すべての条件に当てはまらない場合は、elseがあれば、その配下にある処理を実行します。
使用方法は、次のプログラムを見てください。

# coding: utf-8

a = 2
# 条件が複数の場合
if a == 1:
    print(1)
elif a == 2:
    print(2)
elif a == 3:
    print(3)
elif a == 4:
    print(4)
else:
    print(5)

実行結果

2

5.条件式の判定

条件式は、ブール型に変換されてTrueかFalseで評価します。
基本的にPythonでは、1や有に相当するものをTrue、0や無に相当するものをFalseとして評価します。
そのため、Pythonでは、もっと簡単にif文を記述することができます。
例として、次のプログラムを見てください。

# coding: utf-8

# 条件式が1の場合
if 1:
    print(1)

# 条件式が0の場合
if 0:
    print(0)

# 条件式が中身のある文字列の場合
if 'a':
    print('a')

# 条件式が中身のない文字列の場合
if '':
    print('')

実行結果

1
a

6.pass文

if文を使用するとき、条件式が真でも何も処理をしたくない時があります。
しかし、Pythonはインデントによるブロック構造のため、
インデントの後に、何かしらの処理を記述しないとエラーとなってしまいます。
そこで、使用するのがpass文です。
pass文は「何もしない」という処理を実行します。
使用方法は、次のプログラムを見てください。

# coding: utf-8

print(u'pass文の実行')
# pass文を使用した場合
if True:
    pass

実行結果

pass文の実行

実行結果より、条件式が真となっても、pass文のため、何も処理しないことがわかります。

7.複合文

複合文とは、他の文を内部に持った、複数の文からなる処理のことです。
if文は複合文のため、if文の中にif文を記述することができます。
Pythonでは、複合文の範囲をインデントの深さで判断するため、
if文の中にif文を記述した場合は、その都度、インデントの深さを深くする必要があります。
次のプログラムを見てください。

# coding: utf-8

a = 2
# if文の中にif文
if a > 0:
    if a == 1:
        print(1)
    elif a == 2:
        print(2)
    elif a == 3:
        print(3)
    elif a == 4:
        print(4)
else:
    print(5)

実行結果

2

8.三項演算子

Python2.5以降では、三項演算子を扱うことができます。
次の構文を使用します。

条件式が真の時の値 if 条件式 else 条件式が為の時の値


三項演算子を使用すると、if文を簡潔に記述することができます。
使用方法は、次のプログラムを見てください。

# coding: utf-8

# 三項演算子を使用した場合
a = 1 if True else 0
print(a)

# 三項演算子を使用しない場合
if True:
    b = 1;
else:
    b = 0;
print(b)

実行結果

1
1

9.Javaとの比較

Javaのソースコードとの比較をします。
Javaを知っている方は参考にしてください。

Python Java
# coding: utf-8

# 条件が複数の場合
a = 2
if a == 1:
    print(1)
elif a == 2:
    print(2)
else:
    print(3)

# 条件式が1の場合
if 1:
    print(1)

# 何もしない処理
if True:
    pass

# 三項演算子
b = 1 if True else 0
print(b)
public class Java20 {
    public static void main(String[] args) {
        // 条件が複数の場合
        int a = 2;
        if(a == 1) {
            System.out.println(1);
        }
        else if(a == 2) {
            System.out.println(2);
        }
        else {
            System.out.println(3);
        }

        // 条件式が1の場合はエラーとなるためコメントアウト
        /*
        if(1) {
            System.out.println(1);
        }
        */

        // 何もしない処理
        if(true) {
        }

        // 三項演算子
        int b = true ? 1:0;
        System.out.println(b);
    }
}

コメントの投稿


画像の中に見える文字を入力してください。

トラックバックURL

http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1778

サイト内検索

twitterTwitter

最新ブログ記事

2015年06月13日

JavaScriptの情報室

4冊目 ハイブリッドアプリが作れる。tabris.js

2014年10月16日

C++言語学習録

第3回 ファイルを分割してみよう

2014年10月09日

C++言語学習録

第2回 オブジェクト指向の復習

2014年10月02日

C++言語学習録

第1回 C++の開発環境を整える

2014年09月25日

Swiftを試してみようなう。

第4回 Swiftでクラスを使うなう。

ISL 情報戦略研究所

pagetopこのページの先頭へ戻る