ロジカ式logo

はじめての
Python

ページ一覧に戻る
Lesson11-6 繰り返しと条件分岐の組み合わせ
ロボた

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

プログラム基本の3つの形

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

ロボち
ロボた

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

複雑なブロック構造

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

ロボち
複雑なブロック構造
ロボた

どこからどこまでがブロックの中なのかがわかりにくくなるから、インデントに十分気をつけるようにしてね!

まずは「繰り返し構造」と「条件分岐構造」を組み合わせたプログラムからやってみよう!

ロボち
ロボた

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

条件分岐フロー
条件分岐 公園

使い方の例

📝1
0から50までの数値の中で、偶数だけを表示するプログラムです。

EXAMPLE
num = 0 while num <= 50: #変数numが偶数の時だけ、numを表示する。 if num % 2 == 0: print(num) num += 1
ロボた

変数「num」の値は、繰り返すごとに0から50まで変化していくよ!

そして、変数「num」の値が偶数かどうか毎回調べて、もし偶数なら表示させているんだ!

ロボち

📝2
「while文」を使って、変数「max」で指定された回数繰り返したら、繰り返しを終了させるプログラムです。

EXAMPLE
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」のような、「状態を表す変数」のことを「フラグ変数」っていうよ!

ロボち
EXAMPLE
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」どちらかの状態を表すんだ。

ロボち
bool型

📝3
変数「is_loop」が「True」なら、繰り返しで5個「*」を表示するけど、「False」なら「何もしない」プログラムです。

EXAMPLE
is_loop = True if is_loop == True: for i in range(5): print("*") else: print("何もしません。")
ロボた

このプログラムでは、条件分岐の中に繰り返しがあるパターンになるよ!

これも、ブロックの中にブロックがあるので、インデントに注意するようにしてね!

ロボち

やってみよう

⌨️1
上と同じ「0から50までの数値の中で、偶数だけを表示するプログラム」を、「for文」を使って作ってください。

PRACTICE

📖 解答例と解説

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種類を作ってください。

PRACTICE

📖 解答例と解説

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にする必要があるんだよ!

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