今回は、Python研修で学んだ 「制御構造」についてまとめていきます。
私自身Pythonを学習するのは久しぶりなので、思い出しながら書いていきます!
はじめに
制御構造とは、プログラムの文を特定の順序で実行することを表現する形式のことです。
プログラムは、複数の並んだ文を上から下へ順に実行します。これを「順序」と呼びます。そこに「選択」という制御構造を使うと、複数の中からいずれかを選んで実行することができます。例えば、if文、条件式を用いた条件分岐などです。
また、「繰り返し」という制御構造を使うと、指定した文を繰り返して実行することが可能です。例えば、for文、while文などです。
制御構造はPythonでコードを書くうえでたくさん使用する要素です。
今回は、以下の3つについてまとめます。
- if文
- for文
- while文
if文
if文は条件分岐を行うための構文です。指定された式を評価し、値がTrue(真)かFalse(偽)かに応じて実行する文を選択します。公式は以下の通りです。
if 式A:
文#式AがTrueの場合に実行
elif 式B:
文#式AがFalse、式BがTrueの場合に実行
else:
文#すべての式がFalseの場合に実行
式の下にコロン(:)を書いて改行し、次の行からインデントして書きます。
elifはいくつでも並べることができます。
例えば、「80点以上なら合格、80点未満なら不合格」という出力にしたいとします。
x = int(input('点数を入力してください。'))#inputで値の入力を受け付け、intでその値を数値に変換。さらにそれを変数xとして扱う。
if x >= 80:#80以上
print('合格')
else:#それ以外
print('不合格')
以下が出力結果例です。
点数を入力してください。10(10点の場合)
不合格
点数を入力してください。80(80点の場合)
合格
このように、if文を使うことで条件に応じてプログラムの処理を柔軟に行うことができます!
pythonで使える比較演算子
if文ではよく比較演算子を使います。ぱっと出てこない場合は以下を参考にしてください!
if文を使う際に注意しなければいけないのが、インデントです!Pythonではインデントがプログラムの動作を変化させるので気を付けてください。基本的にそのまま改行したらインデントが自動的に付きますが、間違えてBack Spaceなどを押してしまった場合はきちんと確認するようにしましょう!
for文
for文は繰り返しを行うための構文です。大部分の繰り返しにはfor文が適しているらしいです。for文の公式は以下の通りです。
for 変数 in イテラブル:
文
イテラブル(繰り返し可能なオブジェクト)の後にコロン(:)を書いて改行し、次の行からはインデントして書きます。
for文はイテラブルから要素を一つずつ取り出し、変数に代入してからfor文の内側にある文を実行します。この方式のfor文は一般的に「foreach文」と呼ばれます。
例えば、1から10までそれぞれの値に10を足す処理を繰り返したいとします。
for i in range(1,11):#1から10を取り出し、それを変数iに代入
print(i + 10)#変数iに10を足す
以下が出力結果です。
11
12
13
14
15
16
17
18
19
20
ここで、1から10なんだからコード1行目の(1,11)が(1,10)ではないの?と疑問に感じた方もいるかもしれません。
実はrangeに意味があります。
rangeというのは連続する整数を生成するための組み込み関数です。そしてrangeは、終了値は範囲に含まれません!
ここでは終了値は11なので、10までしか範囲に含まれないという意味になります。
ややこしいですが、for文とrange関数はよくセットで使うので、ぜひ頭に入れておいてください!
複雑な処理 「九九の表の作成」
複雑な処理をするにあたって、例として九九の表の作成をしてみます。これはfor文とrangeを使うことで出力が可能です。
考え方としては1から9までの繰り返しの中に、さらに1から9までの繰り返しを書いて、それらを掛けます。つまり、for文の中にfor文を入れればよいです。
for x in range(1,10):#1から9まで取り出し、それを変数xに代入
for y in range(1,10):#変数xと掛けるために、さらに1から9まで取り出し、それを変数yに代入
print(x*y,end=' ')#xとyを掛け、改行の代わりに半角あける
print()
以下が出力結果です。
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
end=''は値をつなげて表示します。
今回は半角スペースを入れているから、値を半角スペースで区切って1行で見やすく表示しています。
このように、ある構造の中に別の構造を入れ子にすることを「ネスト(巣)」または「ネスティング(巣ごもり)」と呼びます。for文の中にfor文があるネストは「多重ループ」と呼び、今回の場合は「二重ループ」と呼びます。
while文
while文は、for文と同じく繰り返しを行うための構文です。基本的に多くの繰り返しはfor文で書くことができますが、for文で書きにくいな~と感じたらwhile文を使うとうまくいくかもしれません!while文の公式は以下の通りです。
while 式:
文
式の後にコロン(:)を書いて改行し、次の行からはインデントして書きます。
for文と違うところは、for文はイテラブルに対する繰り返しを行うのに対し、while文は式の値に基づいて繰り返しを行います。そして、指定した式の値がTrueである限り、while文は繰り返しを続けます。
例として、1、2、3と続けて出力したいとします。
i = 1#初期値
while i < 4:#変数iが4より小さい=3まで
print(i)
i = i+1#1ずつ増やす
以下が出力結果です。
1
2
3
while i < 4とすることで、iが3まで処理を繰り返すという意味になります。
よく使う処理
続いて、while文やfor文でよく使うものを紹介します。
- continue
これはwhile文またはfor文の内側で使います。continueを使うと、次の繰り返しに移ることができます。continueは以下のように使います。
while 式:
文
if 式:
文
continue#ifでTrueだった場合、while文に戻り次の繰り返しに移る
文
- break
これもwhile文またはfor文の内側で使います。breakをすることで繰り返しを終了することができます。breakは以下のように使います。
while 式:
文
if 式:
文
break#ifでTrueだった場合、繰り返しを終了し、次の処理に移る
文
文#移る処理
まとめ
pythonにおける制御構造の基本的な処理について例を挙げながらまとめました。
- if文:値がTrue(真)かFalse(偽)かに応じて実行する文を選択する
- for文:要素を一つずつ取り出し、変数に代入してからfor文の内側にある文を繰り返し実行する(一般的にwhile文よりも使用頻度が多い)
- while文:指定した式の値がTrueである限り、式の値に基づいて繰り返し実行する
感想
今回記事を書くにあたり内容を改めてまとめたことで、自身の理解が深まりました。また、個人的に条件分岐は自分で処理を操作している感じがして面白さがあり、直感的で分かりやすいと感じました!条件分岐や繰り返し構文に限らず、様々な組み合わせで処理は複雑になっていくので、これからもコードを書く際はどこで何の処理が起きているのかを意識したいと思います!
以上で終わります。ありがとうございました!
