プログラムの基本的な処理
プログラムには3つの基本的な処理があります。
- 順次処理
- 分岐処理
- 反復処理
順次処理
プログラムは上から下に向けて実行されます。
プログラムの中では最も基本的な処理です。
print("処理1")
print("処理2")
print("処理3")
分岐処理
分岐処理とは条件判定を行い、その結果によって処理を行う、あるいは行わないような動作を指します。分岐処理はPythonでは下記のようなものがあります。
- if、elif、else
a = 3
if a > 2:
print("aは2より大きい")
反復処理
反復処理とは条件を満たす限り同じ処理を何度も繰り返すことを指します。
反復処理はPythonでは下記のようなものがあります。
- while
- for
a = 0
while a < 10:
print("aは10未満です")
a = a + 1
Pythonの制御構文
if文
ある条件を満たした場合のみ処理を実行させることができます。
if 条件式:
処理
....
下記が実際の例です。
a = 2
if 1 < a:
print("aは1より大きい")
# "aは1より大きい"と出力されます
aが2のため、ifの条件式1<aはTrueとなり、if内の処理であるprint(“aは1より大きい”)が実行されます。
ためしにaの値を0にしてみたらどうなるでしょうか
a = 0
if 1 < a:
print("aは1より大きい")
# 何も出力されません
こんどはaが0のため、ifの条件式1<aはFalseとなり、if内の処理は実行されません
elif
複数の条件分岐を行いたい場合はifに加えelifを使用します。
if 条件式1:
処理1
....
elif 条件式2:
処理2
....
以下が実際の例です。
a = 3
if 1 < a <= 2:
print("aは1より大きく2以下である")
elif 2 < a:
print("aは2より大きい")
# "aは2より大きい"と出力される
aが3のため、elifの条件式2<aはTrueとなり、elif内の処理であるprint(“aは2より大きい”)が実行されます。
次はaの値を2にしてみます。
a = 2
if 1 < a <= 2:
print("aは1より大きく2以下である")
elif 2 < a:
print("aは2より大きい")
# "aは1より大きく2以下である"と出力される
aが2のため、elifの条件式1<a<=2がTrueとなり、if内の処理であるprint(“aは1より大きく2以下である”)が実行されます。
今度はaの値を0にしてみます。
a = 0
if 1 < a <= 2:
print("aは1より大きく2以下である")
elif 2 < a:
print("aは2より大きい")
# 何も出力しない
aが0のため、ifの条件式1<a<=2はFalseとなります。また、elifの条件式2<aも同様にFalseとなります。したがって何も出力されません。
ちなみにどちらの条件式もTrueになる場合はどうなるのでしょうか?
a = 2
if 1 < a <= 2:
print("aは1より大きく2以下である")
elif 1 < a:
print("aは1より大きい")
# "aは1より大きく2以下である"と出力される
ifの条件式1<a<=2はTrueになります。また、elifの条件式1<aもTrueになります。この場合、ifの処理が行われます。
elifはいくつでも増やすことができます。
a = 5
if 1 < a <= 2:
print("aは1より大きく2以下である")
elif 2 < a <= 3:
print("aは2より大きく3以下である")
elif 3 < a <= 4:
print("aは3より大きく4以下である")
elif 4 < a <= 5 :
print("aは4より大きく5以下である")
# "aは4より大きく5以下である"と出力される
else
if、elifのどちらの条件にもあてはまらない場合に実行したい処理がある場合elseを用います。
if 条件式1:
処理1
....
else:
処理2
....
以下が例です。
a = 5
if 1 < a <= 2:
print("aは1より大きく2以下である")
else:
print("aはそれ以外の値である")
# "aはそれ以外の値である"と出力される
aの値は5なので1<a<=2はFalseとなり、代わりにelse内の処理が実行されます
while文
while文は条件式がTrueになっている間は同じ処理を繰り返します。
while 条件:
処理
...
count = 0
while count < 5:
print(count)
count = count + 1
# 0
# 1
# 2
# 3
# 4
# と出力される
以下の通り実行されます
countは0なのでcount<5が評価されるとTrueになり、while内の処理が順に実行される
print(count)で0が出力される
count=count+1が実行され、countが1になる
count<5が評価されるcountは1なのでTrueになりwhile内の処理が実行される
print(count)で1が出力される
count=count+1が実行され、countが2になる
count<5が評価されるcountは2なのでTrueになりwhile内の処理が実行される
…
count=count+1が実行され、countが4になる
count<5が評価されるcountは4なのでTrueになりwhile内の処理が実行される
print(count)で4が出力される
count=count+1が実行され、countが5になる
count<5が評価されるcountは5なのでFalseになりwhile内の処理が実行されなくなる
for文
for文はリストや辞書などのデータを繰り返し処理することができます
リストを使った場合は下記のとおりです。
for 変数 in 反復処理可能なオブジェクト:
処理
...
for x in [1, 2, 3, 4, 5]:
print(x)
# 1
# 2
# 3
# 4
# 5
# と出力される
xに1が代入された状態でprint(x)が実行され、1が出力される
xに2が代入された状態でprint(x)が実行され、2が出力される
…
xに5が代入された状態でprint(x)が実行され、5が出力される
辞書を使った場合は下記のとおりです。
dict1 = {"りんご":100, "みかん":50, "ばなな":80}
for x in dict1:
print(x, dict1[x])
# りんご 100
# みかん 50
# ばなな 80
# と出力される
xに”りんご”が代入された状態でprint(x, dict1[x])が実行され、「りんご 100」が出力される
xに”みかん”が代入された状態でprint(x, dict1[x])が実行され、「みかん 50」が出力される
xに”ばなな”が代入された状態でprint(x, dict1[x])が実行され、「ばなな 80」が出力される
ループ中に使える文
forやwhileの最中に使える文として下記の2つがあります。
- break
- continue
break文
break文が実行されると、その時点でループは中断されます
for x in [1, 2, 3, 4, 5]:
if x == 3:
break
print(x)
# 1
# 2
# と出力される
xに1が代入された状態となる。if x == 3はFalseとなるので後続のprint(x)で1が出力される
xに2が代入された状態となる。if x == 3はFalseとなるので後続のprint(x)で2が出力される
xに3が代入された状態となる。if x == 3はTrueとなるのでif内のbreakが実行され、ループが中断される
continue文
continue文が実行されるとその時点で後続の処理をスキップし、次のループに移行します
for x in [1, 2, 3, 4, 5]:
if x == 3:
continue
print(x)
# 1
# 2
# 4
# 5
# と出力される
xに1が代入された状態となる。if x == 3はFalseとなるので後続のprint(x)で1が出力される
xに2が代入された状態となる。if x == 3はFalseとなるので後続のprint(x)で2が出力される
xに3が代入された状態となる。if x == 3はTrueとなるのでif内のcontinueが実行され、後続のprint(x)はスキップされる
xに4が代入された状態となる。if x == 3はFalseとなるので後続のprint(x)で4が出力される
xに5が代入された状態となる。if x == 3はFalseとなるので後続のprint(x)で5が出力される