【Python】よくわかるif文の書き方【入門第20回】
目次
if文とは
こんにちは、narupoです。
今回はif文をやりたいと思います。
if
文というのはいったいなんなのか?
たとえばプログラムを作っていて、「もし~なら~する」という処理を書きたくなったとします。
「もし所持金が100円以下なら金融機関を紹介する」とか、
「もし年齢が20歳以下ならラムネを渡す」とかですね。
そういう処理をプログラムで書くとき、多くの場合、if文が使われます。
if
文を覚えればそういう複雑なプログラムを作れるようになります。
具体的には↓を見ていきます。
if文
elif文
else文
if文のネスト
条件式の細かいところ
if
文はプログラムを作るには必須な文なので、この記事で覚えておきましょう。
if文
まずもっとも基本的なif
文です。
if
文は↓のように書きます。
if 条件式:
処理内容
コロン(:
)のあとにインデントをしていることに注意してください。
このようにPythonはインデントで文の階層を指定します。
インデントは半角スペースかタブかどちらかで統一する必要があります。
if
文では条件式がTrue
になったとき、コロン(:
)以降の処理内容が実行されます。
たとえば↓の例を見てみましょう。
:::python
if True:
print('if文が実行されました')
↑の例ではif
文の条件式がTrue
なので、print('if文が実行されました')
が実行されます。
↓の例ではどうでしょうか。
:::python
if False:
print('このif文は実行されません')
↑の例では条件式がFalse
なので、if
文の内容は実行されません。
条件式には前回、前々回とやってきたブール演算や比較演算を使うことができます。
たとえば、↓のように書くことが可能です。
:::python
money = 100
if money < 200:
print('良い金融機関しってますよ')
↑の例では、money
が100
で、条件式のmoney < 200
がTrue
になるので、if
文の内容のprint
が実行されます。
if
文の内容は複数書くことが出来ます。
たとえば↓のようにです。
:::python
if True:
print('いろ')
print('はに')
print('ほへと')
コロン(:
)以降のインデントされた行はすべてif
文がTrue
のときに実行される内容です。
インデントされていない行はif
文ではないので注意してください。
たとえば↓の、print('赤')
, print('緑')
はif
文ではないので、条件式の結果に関わらず実行されます。
:::python
print('赤')
if False:
print('青')
print('黄')
print('緑')
elif文
elif
文はif
文の一部です。if
文とセットで使います。
elif
文を使うと複数の条件の処理内容を書くことが出来ます。
たとえば↓を見てみましょう。
:::python
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
になっている文を最初に実行します。
たとえば↓を見てみましょう。
:::python
if True:
print('ひとつ目のif文')
elif False:
print('ふたつ目のif文')
↑の例では、ひとつ目のif
文がTrue
なので、ふたつ目のelif
文は無視されます。
よってprint('ひとつ目のif文')
が実行されます。
では↓の例はどうでしょうか。
:::python
if True:
print('ひとつ目のif文')
elif True:
print('ふたつ目のif文')
ふたつとも条件式がTrue
ですが、この場合もPythonは最初のif
文を優先して実行します。
↑の例ではひとつ目のif
文が実行され、ふたつ目のelif
文は無視されて実行されません。
また、elif
文は複数つなげることができます。
たとえば↓のようにです。
:::python
if False:
print('ひとつ目のif文')
elif False:
print('ふたつ目のif文')
elif True:
print('みっつ目のif文')
↑の例ではみっつ目のelif
文がTrue
なので、このみっつ目のelif
文が実行されます。
else文
さきほど見てきたif
文とelif
文、そのすべてがFalse
だったときに実行させたい処理があるとします。
そういう場合にelse
文が使えます。
else
文はif
文にひとつしかくっつけられません。
:::python
if False:
print('ひとつ目のif文')
else:
print('すべてFalseでした')
↑の例では、ひとつ目のif
文がFalse
なので、最後のelse
文が実行されます。
:::python
if False:
print('ひとつ目のif文')
elif False:
print('ふたつ目のif文')
else:
print('すべてFalseでした')
↑の例では、ひとつ目のif
文、ふたつ目のelif
文ともにFalse
なので、最後のelse
文が実行されます。
↓のように、どれかひとつでもif
文、elif
文がTrue
なら、else
文は実行されません。
:::python
if False:
print('ひとつ目のif文')
elif True:
print('ふたつ目のif文')
else:
print('すべてFalseでした')
↑の例ではふたつ目のelif
文がTrue
なので、print('ふたつ目のif文')
が実行されます。
このように、else
文はif
文の最後の門番のように扱えます。
おれがぜんぶ受け止めるぜ!
という感じですね。
if文のネスト(入れ子)
if
文はネストすることができます。
たとえば↓のようにです。
:::python
if True:
if True:
print('ネスト')
ネストする場合は、↑のようにインデントで階層を作ります。
何度も言いますが、インデントは半角スペースかタブ、どちらかに統一するようにしてください。統一していないとPythonはエラーを出します。
たとえば↓のように書くと「age
が10以上でかつname
が太朗
のとき」という条件で処理を実行できます。
:::python
age = 10
name = '太朗'
if age >= 10:
if name == '太朗':
print('太朗くん10歳')
もっとも、↑のような場合はand
を使った条件式を書くほうが普通でしょう。
:::python
age = 10
name = '太朗'
if age >= 10 and name == '太朗':
print('太朗くん10歳')
しかし、私が思うに条件式を長く書くのはあまり綺麗なコードとは言えません。
if
文をネストしたほうが視覚的にわかりやすい場合もあります。
臨機応変に選べるようになってください。
条件式の細かいところ
条件式というのは、最終的にはTrue
かFalse
かで決定されます。
この真偽値については↓の記事で解説しました。
つまり、比較演算でなくても↓のような条件式は有効なわけです。
:::python
if None:
print('if')
else:
print('else')
↑の例ではprint('else')
が実行されます。
ほかにも文字列を条件式に使って、
:::python
if 'Got a funk':
print('Let\'s dance!')
のようにも書けますし、整数や実数をそのまま使うことも可能です。
:::python
if 1:
print('1')
elif 1.23:
print('1.23')
bool
クラスを使えば、どんな値がTrue
になるのかがわかるので、暇な人は確認してみてください。
練習問題
ここで練習問題です。
↓のif
文の出力結果は何になるでしょうか?
:::python
if False:
print('ねんねん')
elif False:
print('ころりよ')
else:
print('おころりよ')
正解は「おころりよ」です。
では続いて、↓のif
文の出力結果は何になるでしょうか?
:::python
money = 1000
if money >= 2000:
print('焼肉いこうぜ!')
elif 2000 > money >= 1000:
print('ラーメンいこうぜ!')
else:
print('スーパーで弁当買おうぜ!')
正解は「ラーメンいこうぜ!」です。
最後の問題です。↓のif
文の出力結果は何になるでしょうか?
:::python
money = 2000
name = '太朗'
if money < 2000:
print('名を名乗れ!')
elif money >= 2000:
if name == '次郎':
print('次郎さんはお金持ち')
elif name == '太朗':
print('太朗さんはお金持ち')
else:
print('ほえ~')
正解は「太朗さんはお金持ち」です。
おわりに
if
文は非常に大切な文です。これがないとプログラミングははじまりません。
最初はif
文を覚えると良いでしょう。その次にelif
文、そしてelse
文ですね。
以上、次回に続きます。
また見てね