
ここまでで、Pythonによるプログラムの3つの基本的な構造を学んできたね!

この3つを組み合わせれば、どんな複雑なプログラムも作ることができるよ!


この3つを組み合わせて、「繰り返しの中に条件分岐」があったり、「繰り返しの中に繰り返し」があったり、「条件分岐の中に条件分岐」があるプログラムの作り方を、これから教えていくね!こういうのを「ネスト(入れ子)」っていうんだよ!

ただ複雑なプログラムになってくると、どうしてもブロックの中にブロックを作ることになるんだ!



どこからどこまでがブロックの中なのかがわかりにくくなるから、インデントに十分気をつけるようにしてね!
まずは「繰り返し構造」と「条件分岐構造」を組み合わせたプログラムからやってみよう!


繰り返しの中に、条件分岐があるよ!


使い方の例
📝1
0から50までの数値の中で、偶数だけを表示するプログラムです。
num = 0
while num <= 50:
#変数numが偶数の時だけ、numを表示する。
if num % 2 == 0:
print(num)
num += 1

変数「num」の値は、繰り返すごとに0から50まで変化していくよ!
そして、変数「num」の値が偶数かどうか毎回調べて、もし偶数なら表示させているんだ!

📝2
「while文」を使って、変数「max」で指定された回数繰り返したら、繰り返しを終了させるプログラムです。
max = 325
num = 1
is_loop = 1
print("繰り返しを終了する回数:", max)
while is_loop == 1:
#変数numの値が変数maxに達したら繰り返しを終了する。
if num >= max:
is_loop = 0
print("繰り返しを終了しました。")
print("繰り返した回数:", num)
num += 1

変数「max」で繰り返しを終了する回数を指定しているよ!
変数「num」は繰り返した回数の値で、繰り返すごとに1つずつ増えていく!


そして、変数「num」の値が「max」の値より大きくなったら、繰り返しを終了させているんだ!
繰り返す条件は、変数「is_loop」の値が「1」なら繰り返すことになっているよ!


それで、変数「num」の値が「max」の値より大きくなったら、この変数「is_loop」の値を「1」以外に変えているんだ!
こうすることで、繰り返しを終了させているんだよ!
この変数「is_loop」のような、「状態を表す変数」のことを「フラグ変数」っていうよ!

max = 325
num = 1
is_loop = True
print("繰り返しを終了する回数:", max)
while is_loop == True:
#変数numの値が変数maxに達したら繰り返しを終了する。
if num >= max:
is_loop = False
print("繰り返しを終了しました。")
print("繰り返した回数:", num)
num += 1

これは、前のと同じプログラムなんだけど、フラグ変数「is_loop」に「True」や「False」が代入されているね!
これもプログラムで扱うデータの型の一つで、「bool型」っていうんだよ!「True」と「False」どちらかの状態を表すんだ。


📝3
変数「is_loop」が「True」なら、繰り返しで5個「*」を表示するけど、「False」なら「何もしない」プログラムです。
is_loop = True
if is_loop == True:
for i in range(5):
print("*")
else:
print("何もしません。")

このプログラムでは、条件分岐の中に繰り返しがあるパターンになるよ!
これも、ブロックの中にブロックがあるので、インデントに注意するようにしてね!

やってみよう
⌨️1
上と同じ「0から50までの数値の中で、偶数だけを表示するプログラム」を、「for文」を使って作ってください。
📖 解答例と解説
for num in range(51): #変数numが偶数の時だけ、numを表示する。 if num % 2 == 0: print(num)

変数「num」の値は、指定した回数より1つ少ない値まで変化するんだったね!
それで、「50」を含めるためには、繰り返す回数は「51」にする必要があるんだ!

⌨️2
「1から50までの数値の中で、3の倍数のときは「3の倍数です。」と表示し、それ以外のときは数値を表示するプログラム」を、「for文」を使ったバージョンと、「while文」を使ったバージョンの2種類を作ってください。
📖 解答例と解説
for文
for num in range(1, 51): #変数numが3の倍数の時は、「3の倍数です。」と表示する。 if num % 3 == 0: print("3の倍数です。") else: print(num)
while文
num = 1 while num <= 50: #変数numが3の倍数の時は、「3の倍数です。」と表示する。 if num % 3 == 0: print("3の倍数です。") else: print(num) num += 1

変数「num」の値は、1から50まで変化するんだから、変数「num」の始まりが「1」からになるようにしないといけないよね!
それで、「50」を含めるためには、for文ではrange(1, 51)、while文では<= 50にする必要があるんだよ!

- プログラムが複雑になると、ブロックの中にブロックがあるので、インデントに気をつける。
- 「状態を表す変数」のことを「フラグ変数」という。
- 「True」と「False」どちらかの状態を表すデータ型を「bool(ブール)型」という。