【入門者向け】Pythonの基礎文法③ 制御構文(if、for)|Python入門 #4

f:id:lib-arts:20190804170008p:plain

#1ではPythonを用いたFizzBuzzのコーディングについてまとめました。

入門者の方に読んでみていただいたところ、少し難しかったようなので、#2以降では#1で触れた基本文法をそれぞれもう少し丁寧に解説を行なっていきます。基本的には下記のPythonのドキュメントのチュートリアルなどを元にして解説していきます。

Python チュートリアル — Python 3.7.4 ドキュメント

#2ではPythonにおける四則演算・文字列について、#3ではリスト・タプル・辞書について取り扱いました。

https://lib-arts.hatenablog.com/entry/entrance_python3
#4ではSection4.1のif文とSection4.2のfor文などを中心にPythonの制御構文について取り扱います。

4. その他の制御フローツール — Python 3.7.4 ドキュメント

以下目次になります。
1. if文による条件分岐(4.1)
2. for文による繰り返し文の制御(4.2~4.5)
3. まとめ

 

1. if文による条件分岐(4.1)
1節ではif文について取り扱います。if文は条件分岐を実装するための構文です。

if 条件1:
    条件1が成立するときの処理
elif 条件2:
    条件1が成立せず、条件2が成立するときの処理
else:
    条件1、条件2が両方とも成立しないときの処理

上記のような構文となっています。elifは0〜複数個、elseは0〜1個記述します。
構文だけ眺めていてもわかりづらいので実際にチュートリアルの実装を動かしてみます。

x = int(input("Please enter an integer: "))

if x < 0:
    x = 0
    print('Negative changed to zero')
elif x == 0:
    print('Zero')
elif x == 1:
    print('Single')
else:
    print('More') 

上記を動かすと下記のような結果を得ることができます。

f:id:lib-arts:20190811153403p:plain

上記ではフォームに整数を入力し、0未満、0、1、2以上を判定するプログラムです。例えば-4を入力すると下記のようになります。

f:id:lib-arts:20190811153420p:plain

次に0にすると下記が確認できます。

f:id:lib-arts:20190811153543p:plain

また、2で実行してみると下記のようになります。

f:id:lib-arts:20190811153603p:plain
このようにifやelifの後に条件式を設定し、その条件式が成立するかしないかによって処理を振り分けます。
ifについてはだいたいつかむことができたので1節はここまでとします。


2. for文による繰り返し文の制御(4.2~4.3)
2節ではfor文による繰り返し文の制御について見ていきます。

for i in シーケンス:
    iを用いた処理

Pythonのfor文は上記のような書き方をします。Cなどの他の言語と異なるのは任意のシーケンス型 (リストまたは文字列) にわたって反復を行うということです。この点が独特なのですが、言葉で説明してもわかりづらいので実際にコードを確認していきましょう。

# Measure some strings:
words = ['cat', 'window', 'defenestrate']
for w in words:
    print(w, len(w))

上記を動かすと下記のようになります。

f:id:lib-arts:20190811154705p:plain

上記ではリスト型で定義されるwordsの要素として三つの単語を設定しており、それぞれを変数のwに代入し、それぞれの単語に対してlen構文で長さを出力しています。ここで注意したいのが、for文の実行にあたりwordsをシーケンス型として与えているということです。この辺はこのように実装方法を定義したというものなので、あまり気にしすぎず受け入れるのが良いかと思います。
ここで、数列に対して反復を行う必要がある場合、組み込み関数 range()が便利なので知っておくと良いです。range関数は算術型の数列を生成しますので、そちらをシーケンス型として使用すると便利です。下記が実装例です。

for i in range(5):
    print(i)

実装例の実行結果は以下のようになります。

f:id:lib-arts:20190811174401p:plain

range(5)を用いることで、[0,1,2,3,4]を生成しています。またrange関数は下記のようにrange(start,end,delta)のように値を指定することができます。end、start、deltaの順に引数として認識されます(startは0、deltaは1がデフォルト)。

print(list(range(5, 10)))
print(list(range(0, 10, 3)))
print(list(range(-10, -100, -30)))

上記の実行結果は下記のようになります。

f:id:lib-arts:20190811174426p:plain

ここまででfor文についてはだいたいの把握ができたので2節はここまでとします。


3. まとめ
#4ではif文、for文といった制御構文について取り扱いました。
#5では入出力の実装の紹介を行います。