見出し画像

Pythonの勉強するよ【フロー制御編③】

どうも。今回は間をあけずに投稿できました。
さて、前回はブール演算子について勉強しました。
簡単に復習すると、こんな感じでした。

・and演算子は、両方のブール値がTrueの場合にTrueになり、それ以外はFalseになる。
・or演算子は、どちらかのブール値がTrueの場合にTrueになり、両方がFalseの場合に、Falseになる。
・not演算子は、ブール値の値を反転させる。

それでは今回は、ブール演算子と比較演算子の組み合わせから勉強していきます。

2.4 ブール演算子と比較演算子の組み合わせ

以前勉強したように、比較演算子はブール値のTrueとFalseを返却するので、ブール演算子と組み合わせて使用することができます。
例えば、4 < 5のような式はブール値ではありませんが、式を評価するとブール値になります。そのため、次のようにand演算子などと組み合わせることができます。

>>> ( 4 < 5 ) and ( 5 < 6 )
True
>>> ( 1 == 2 ) or ( 2 == 2 )
True

Pythonでは、演算子の左辺の式を評価した後に、右辺の式を評価します。
両方ともブール値でありそれを評価した結果もブール値になります。
( 4 < 5 ) and ( 5 < 6 )を順番に評価してみると、下のようになります。

( 4 < 5 ) and ( 5 < 6 )

True and ( 5 < 6 )

True and True

True

式には複数のブール演算子を比較演算子と組み合わせて用いることができます。

>>> 2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2
True

ブール演算子は、算術演算子と同様に優先順位を持ちます。
(算術演算子についてはこちらをどうぞ)
Pythonは算術演算子と比較演算子を評価した後に、not演算子を評価し、次にand演算子、最後にor演算子を評価します。
上の式を順番に評価していくと次のようになります。

2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2

True and not 2 + 2 == 5 and 2 * 2 == 2 + 2

True and not False and 2 * 2 == 2 + 2

True and not False and True

True and True and True

True and True

True

というわけで、ブール演算子と比較演算子の組み合わせのPointは下のようになります。

【Point】
・比較演算子とブール演算子は組み合わせて使用することができる。
・Pythonは、演算子の左辺の式を評価した後に、右辺の式を評価する。
・ブール演算子は、算術演算子と同様に優先順位を持つ。

2.5 フロー制御の構成要素

フロー制御文は、条件式と呼ばれる部分からは始まり、と呼ばれるコードのブロックが続きます。Python特有のフロー制御文を勉強する前に、条件とコードのブロックについて勉強しましょう。

2.5.1 条件式

今まで勉強してきたブール式は、すべて条件式とみなすことができますが、条件式はフロー制御文で特にそう呼ぶ場合に使います。
条件式は常に1つのブール値(TrueかFalse)に評価され、フロー制御は条件式がTrueかFalseかによって何を実行するか決定します。
ほぼすべてのフロー制御文で条件式を用います。

2.5.2 コードのブロック

Pythonのコードでは、1行以上のまとまりをブロックとしてひとまとまりにすることができます。
ブロックの区間は、字下げ(インデント)で指定します。Pythonの標準コーディングスタイルの場合、4文字の半角スペースを入れます(Googleのスタイルの場合は2文字)。日本語の全角スペースを入れないように注意しましょう。
ブロックには次の3つのルールがあります。

【ブロックのルール】
1. ブロックはインデントが増えると開始する。
2. ブロックの中には、ほかのブロックを含めることができる。
3. インデントがなくなるか、上位ブロックのインデントに戻るとブロックは終了する。

つまり、同じだけインデントがあるコードは同じブロックだよってことですね。実際に見てみましょう。

name = 'Marry'
password = '12345'
if name == 'Marry':
    print('Hello, Marry!')
    if password == '12345':
        print('OK. Authenticated.')
    else:
	print('error.')

最初のブロックは、print('Hello, Marry!')の行から始まる以下の行を含みます。このブロックの中に2つ目のブロックがあります。2つ目のブロックは、print('OK. Authenticated.')の1行だけです。
そして、3つ目のブロックも、print('error.')の1行だけです。

【Point】
・条件式は常に1つのブール値(TrueかFalse)に評価され、フロー制御は条件式がTrueかFalseかによって何を実行するか決定する。
・Pythonのコードでは、1行以上のまとまりをブロックとしてひとまとまりにすることができる。
・ブロックの区間は、字下げ(インデント)で指定する。

まとめ

というわけで、いかがでしたでしょうか。
まとめとしては、次のようになります。

【まとめ】
・比較演算子とブール演算子は組み合わせて使用することができる。
・Pythonのコードでは、1行以上のまとまりをブロックとしてひとまとまりにすることができる。
・ブロックの区間は、字下げ(インデント)で指定する。

今回の部分がわかれば、フロー制御について第一歩を踏み出したも同然です!
次回は、今回しれっと使っていたif文についてやっていこうと思います。
それでは。

P.S.

料理のだしについて勉強してるのですが、いろいろと新しいことがわかって楽しいです。
お料理に関する記事とかも書いていきたいです。

この記事が気に入ったらサポートをしてみませんか?