スポンサーリンク

コードが書ける!数式が書ける!AAが書ける!スタンプが貼れる!

無料の匿名掲示板型SNS「このはちゃんねる

新規会員募集中!

【Python】よくわかるif文の書き方【入門第20回】

102, 2019-08-13

目次

if文とは

こんにちは、narupoです。

今回はif文をやりたいと思います。
if文というのはいったいなんなのか?

たとえばプログラムを作っていて、「もし~なら~する」という処理を書きたくなったとします。
「もし所持金が100円以下なら金融機関を紹介する」とか、
「もし年齢が20歳以下ならラムネを渡す」とかですね。

そういう処理をプログラムで書くとき、多くの場合、if文が使われます。
if文を覚えればそういう複雑なプログラムを作れるようになります。

具体的には↓を見ていきます。

  • if文
  • elif文
  • else文
  • if文のネスト
  • 条件式の細かいところ

if文はプログラムを作るには必須な文なので、この記事で覚えておきましょう。

if文

まずもっとも基本的なif文です。
if文は↓のように書きます。

if 条件式:
    処理内容

コロン(:)のあとにインデントをしていることに注意してください。
このようにPythonはインデントで文の階層を指定します。
インデントは半角スペースかタブかどちらかで統一する必要があります。

if文では条件式がTrueになったとき、コロン(:)以降の処理内容が実行されます。

たとえば↓の例を見てみましょう。

if True:
    print('if文が実行されました')

↑の例ではif文の条件式がTrueなので、print('if文が実行されました')が実行されます。
↓の例ではどうでしょうか。

if False:
    print('このif文は実行されません')

↑の例では条件式がFalseなので、if文の内容は実行されません。

条件式には前回前々回とやってきたブール演算や比較演算を使うことができます。
たとえば、↓のように書くことが可能です。

money = 100
if money < 200:
    print('良い金融機関しってますよ')

↑の例では、money100で、条件式のmoney < 200Trueになるので、if文の内容のprintが実行されます。

if文の内容は複数書くことが出来ます。
たとえば↓のようにです。

if True:
    print('いろ')
    print('はに')
    print('ほへと')

コロン(:)以降のインデントされた行はすべてif文がTrueのときに実行される内容です。
インデントされていない行はif文ではないので注意してください。
たとえば↓の、print('赤'), print('緑')if文ではないので、条件式の結果に関わらず実行されます。

print('赤')

if False:
    print('青')
    print('黄')

print('緑')

elif文

elif文はif文の一部です。if文とセットで使います。
elif文を使うと複数の条件の処理内容を書くことが出来ます。
たとえば↓を見てみましょう。

if False:
    print('ひとつ目のif文')
elif True:
    print('ふたつ目のif文')

まず、Pythonはひとつ目のif文を見ます。
ひとつ目のif文の条件式はFalseです
するとPythonは、if文にくっついている次のelif文を見ます。
それで、elif文の条件式はTrueです。
なので↑の例ではelif文の実行内容のprint('ふたつ目のif文')が実行されます。

ここで注意したいのでは、条件式がFalseになっているひとつ目のif文は実行されないという点です。
このように、elif文をif文につなげた場合、上から順に見ていって、条件式がTrueになっている文を最初に実行します。

たとえば↓を見てみましょう。

if True:
    print('ひとつ目のif文')
elif False:
    print('ふたつ目のif文')

↑の例では、ひとつ目のif文がTrueなので、ふたつ目のelif文は無視されます。
よってprint('ひとつ目のif文')が実行されます。

では↓の例はどうでしょうか。

if True:
    print('ひとつ目のif文')
elif True:
    print('ふたつ目のif文')

ふたつとも条件式がTrueですが、この場合もPythonは最初のif文を優先して実行します。
↑の例ではひとつ目のif文が実行され、ふたつ目のelif文は無視されて実行されません。

また、elif文は複数つなげることができます。
たとえば↓のようにです。

if False:
    print('ひとつ目のif文')
elif False:
    print('ふたつ目のif文')
elif True:
    print('みっつ目のif文')

↑の例ではみっつ目のelif文がTrueなので、このみっつ目のelif文が実行されます。

else文

さきほど見てきたif文とelif文、そのすべてがFalseだったときに実行させたい処理があるとします。
そういう場合にelse文が使えます。
else文はif文にひとつしかくっつけられません。

if False:
    print('ひとつ目のif文')
else:
    print('すべてFalseでした')

↑の例では、ひとつ目のif文がFalseなので、最後のelse文が実行されます。

if False:
    print('ひとつ目のif文')
elif False:
    print('ふたつ目のif文')
else:
    print('すべてFalseでした')

↑の例では、ひとつ目のif文、ふたつ目のelif文ともにFalseなので、最後のelse文が実行されます。
↓のように、どれかひとつでもif文、elif文がTrueなら、else文は実行されません。

if False:
    print('ひとつ目のif文')
elif True:
    print('ふたつ目のif文')
else:
    print('すべてFalseでした')

↑の例ではふたつ目のelif文がTrueなので、print('ふたつ目のif文')が実行されます。

このように、else文はif文の最後の門番のように扱えます。

おれがぜんぶ受け止めるぜ!

という感じですね。

if文のネスト(入れ子)

if文はネストすることができます。
たとえば↓のようにです。

if True:
    if True:
        print('ネスト')

ネストする場合は、↑のようにインデントで階層を作ります。
何度も言いますが、インデントは半角スペースかタブ、どちらかに統一するようにしてください。統一していないとPythonはエラーを出します。

たとえば↓のように書くと「ageが10以上でかつname太朗のとき」という条件で処理を実行できます。

age = 10
name = '太朗'

if age >= 10:
    if name == '太朗':
        print('太朗くん10歳')

もっとも、↑のような場合はandを使った条件式を書くほうが普通でしょう。

age = 10
name = '太朗'

if age >= 10 and name == '太朗':
    print('太朗くん10歳')

しかし、私が思うに条件式を長く書くのはあまり綺麗なコードとは言えません。
if文をネストしたほうが視覚的にわかりやすい場合もあります。
臨機応変に選べるようになってください。

条件式の細かいところ

条件式というのは、最終的にはTrueFalseかで決定されます。
この真偽値については↓の記事で解説しました。

つまり、比較演算でなくても↓のような条件式は有効なわけです。

if None:
    print('if')
else:
    print('else')

↑の例ではprint('else')が実行されます。
ほかにも文字列を条件式に使って、

if 'Got a funk':
    print('Let\'s dance!')

のようにも書けますし、整数や実数をそのまま使うことも可能です。

if 1:
    print('1')
elif 1.23:
    print('1.23')

boolクラスを使えば、どんな値がTrueになるのかがわかるので、暇な人は確認してみてください。

練習問題

ここで練習問題です。
↓のif文の出力結果は何になるでしょうか?

if False:
    print('ねんねん')
elif False:
    print('ころりよ')
else:
    print('おころりよ')

正解は「おころりよ」です。
では続いて、↓のif文の出力結果は何になるでしょうか?

money = 1000

if money >= 2000:
    print('焼肉いこうぜ!')
elif 2000 > money >= 1000:
    print('ラーメンいこうぜ!')
else:
    print('スーパーで弁当買おうぜ!')

正解は「ラーメンいこうぜ!」です。
最後の問題です。↓のif文の出力結果は何になるでしょうか?

money = 2000
name = '太朗'

if money < 2000:
    print('名を名乗れ!')
elif money >= 2000:
    if name == '次郎':
        print('次郎さんはお金持ち')
    elif name == '太朗':
        print('太朗さんはお金持ち')
else:
    print('ほえ~')

正解は「太朗さんはお金持ち」です。

おわりに

if文は非常に大切な文です。これがないとプログラミングははじまりません。
最初はif文を覚えると良いでしょう。その次にelif文、そしてelse文ですね。

以上、次回に続きます。

また見てね

関連動画

投稿者名です。64字以内で入力してください。

必要な場合はEメールアドレスを入力してください(全体に公開されます)。

投稿する内容です。

スポンサーリンク

スポンサーリンク

スポンサーリンク

スポンサーリンク