6日目のゴールと今日やること
6日目のテーマは
「繰り返しを“組み合わせて使う”感覚をつかむこと」 です。
ここまでであなたは、
forとrangeで回数を数える- ステップを変えて、数え方をデザインする
- 「今」と「残り」を同時に扱うトレーニングカウンターを書く
ところまで来ました。
今日はここに、
- 「セット」という考え方を足す
- 繰り返しの中で、さらに繰り返す(入れ子構造)
- 「大きな単位」と「小さな単位」を分けてカウントする
という、“二重のカウント” を入れていきます。
いきなり難しいことはしません。
でも、「1セット○回 × ○セット」という、
現実のトレーニングや作業に近い形を目指します。
「セット」という考え方をコードに持ち込む
現実のトレーニングを分解してみる
例えば、腕立てを「10回 × 3セット」やるとします。
頭の中では、こんなふうに考えています。
1セット目
1回目
2回目
…
10回目
2セット目
1回目
…
10回目
3セット目
1回目
…
10回目
つまり、
「セット」という大きな単位
「回数」という小さな単位
この2つのレベルでカウントしています。
Python でこれを表現するには、
- 外側の
forで「セット数」を数える - 内側の
forで「セット内の回数」を数える
という形になります。
これが、いわゆる「二重ループ」です。
まずは「セット × 回数」を素直に書いてみる
セットと回数を別々の変数で持つ
まずは、こういうコードを書いてみましょう。
sets = 3 # セット数
reps_per_set = 5 # 1セットあたりの回数
for s in range(1, sets + 1):
print("=== セット", s, "開始 ===")
for r in range(1, reps_per_set + 1):
print(" →", r, "回目")
print("=== セット", s, "終了 ===")
print()
Python実行すると、こんな出力になります。
=== セット 1 開始 ===
→ 1 回目
→ 2 回目
→ 3 回目
→ 4 回目
→ 5 回目
=== セット 1 終了 ===
=== セット 2 開始 ===
→ 1 回目
→ 2 回目
→ 3 回目
→ 4 回目
→ 5 回目
=== セット 2 終了 ===
=== セット 3 開始 ===
→ 1 回目
→ 2 回目
→ 3 回目
→ 4 回目
→ 5 回目
=== セット 3 終了 ===
ここでの構造を、しっかりイメージで捉えてほしいです。
外側の for s in range(1, sets + 1):
→ 「セット番号」を 1, 2, 3… と変えながら回している
内側の for r in range(1, reps_per_set + 1):
→ 各セットの中で、「回数」を 1, 2, 3… と数えている
「セット」と「回数」を、別々のループで表現している
これが今日のど真ん中です。
二重ループのイメージをしっかりつかむ
外側が「大きな単位」、内側が「小さな単位」
さっきのコードを、頭の中でこう再生してみてください。
1セット目(s = 1)
1回目(r = 1)
2回目(r = 2)
3回目(r = 3)
4回目(r = 4)
5回目(r = 5)
2セット目(s = 2)
1回目(r = 1)
…
3セット目(s = 3)
1回目(r = 1)
…
このように、
- 外側のループが「セットの切り替え」
- 内側のループが「セット内の繰り返し」
を担当しています。
ここで大事なのは、
「ループの中に、さらにループがある」
という構造を怖がらずに、そのまま受け止めることです。
「今どのセットの何回目か」を表示する
セット番号と回数を組み合わせて表示する
次に、「今どのセットの何回目か」を
1行で分かるようにしてみましょう。
sets = 3
reps_per_set = 5
for s in range(1, sets + 1):
print("=== セット", s, "開始 ===")
for r in range(1, reps_per_set + 1):
print("セット", s, "の", r, "回目")
print("=== セット", s, "終了 ===")
print()
Python出力はこうなります。
=== セット 1 開始 ===
セット 1 の 1 回目
セット 1 の 2 回目
セット 1 の 3 回目
セット 1 の 4 回目
セット 1 の 5 回目
=== セット 1 終了 ===
=== セット 2 開始 ===
セット 2 の 1 回目
セット 2 の 2 回目
セット 2 の 3 回目
セット 2 の 4 回目
セット 2 の 5 回目
=== セット 2 終了 ===
...
ここで意識してほしいのは、
sは「セット番号」rは「セット内の回数」
という役割を持っていることです。
「この数字は何を表しているか?」を名前で区別する
これは、コードを読むときの大きな助けになります。
「今」と「残り」をセット単位でも考えてみる
セットにも「残りセット数」がある
5日目では、「今何回目か」と「残り何回か」を扱いました。
今日はそれを「セット」にも広げてみます。
例えば、3セットあるなら、
1セット目 → 残り2セット
2セット目 → 残り1セット
3セット目 → 残り0セット
というふうに考えられます。
これをコードにすると、こうなります。
sets = 3
reps_per_set = 5
for s in range(1, sets + 1):
print("=== セット", s, "開始 ===")
print("残りセット数:", sets - s)
print()
for r in range(1, reps_per_set + 1):
print(" → セット", s, "の", r, "回目")
print()
print("=== セット", s, "終了 ===")
print()
Python出力の一部はこんな感じです。
=== セット 1 開始 ===
残りセット数: 2
→ セット 1 の 1 回目
→ セット 1 の 2 回目
...
=== セット 2 開始 ===
残りセット数: 1
...
ここでも、
setsは「全部で何セットか」sは「今何セット目か」sets - sは「残りセット数」
という関係になっています。
「今」と「残り」を、セット単位でも考える
これで、カウンターとしての表現力がさらに上がります。
「最後のセットだけ特別メッセージ」を入れる
外側のループに if を組み合わせる
トレーニングっぽくするなら、
最後のセットだけ特別扱いしたくなりますよね。
外側のループに if を足してみましょう。
sets = 3
reps_per_set = 5
for s in range(1, sets + 1):
print("=== セット", s, "開始 ===")
if s == sets:
print("ラストセット! 全力でいこう!")
else:
print("まだ余力を残しておいてOKです。")
print("残りセット数:", sets - s)
print()
for r in range(1, reps_per_set + 1):
print(" → セット", s, "の", r, "回目")
print()
print("=== セット", s, "終了 ===")
print()
Pythonここでの構造はこうです。
- 外側の
for:セットごとの処理 - 外側の
if:最後のセットかどうかでメッセージを変える - 内側の
for:セット内の回数カウント
「どのレベルの話をしているか」を意識して if を書く
これが、二重ループを扱うときのコツです。
6日目のミニ仕上げ:自分用「セット付きトレーニングカウンター」
セット数と回数を設定で変えられる形にする
今日の内容をまとめて、
自分用の「セット付きカウンター」を作ってみましょう。
sets = 3 # セット数
reps_per_set = 8 # 1セットあたりの回数
print("===== セット付きトレーニングカウンター =====")
print()
print("今日は", sets, "セット ×", reps_per_set, "回 です。")
print()
for s in range(1, sets + 1):
print("=== セット", s, "開始 ===")
if s == sets:
print("ラストセット! 集中していこう。")
else:
print("まだいける。残りセット数:", sets - s)
print()
for r in range(1, reps_per_set + 1):
print(" →", r, "回目")
print("=== セット", s, "終了 ===")
print()
print("おつかれさま。今日のメニューは完了です。")
Pythonこのコードは、
- セット数と回数を上の2行で設定できる
- セットごとに開始・終了が表示される
- 最後のセットだけ特別メッセージが出る
という意味で、
かなり“実用的なカウンターアプリ”に近づいています。
6日目で特に深く理解してほしいこと
1つ目:「大きな単位」と「小さな単位」を分けて考える
セット
回数
この2つを別々のループで扱うことで、
現実のトレーニングや作業に近い構造を作れます。
「どの数字が何を表しているか」を、
変数名とループの位置で意識することが大事です。
2つ目:二重ループは「外側が流れ、内側が繰り返し」
外側の for は「大きな流れ」
内側の for は「その中の繰り返し」
という役割分担になっています。
「セットごとに何かする」
「日ごとに何かする」
といった構造は、
すべてこの二重ループの応用です。
3つ目:「今」と「残り」はセットにも回数にも使える
i と total - i だけでなく、
s と sets - sr と reps_per_set - r
のように、
「今どこにいるか」と「あとどれくらいか」を
いろんなレベルで考えられるようになると、
アプリとしての表現力が一気に広がります。
7日目へのつなぎ
6日目までであなたは、
- セット × 回数という二重のカウントを扱える
- 外側と内側のループの役割を分けて考えられる
- 「今」と「残り」をセット単位でも考えられる
というところまで来ました。
7日目は、この1週間の「繰り返しカウントアプリ」を総まとめして、
- 自分で「こういうカウンターがほしい」と決める
- それをコードとして形にする
という、「自分のアイデアをアプリにする一歩目」を踏みます。
最後にひとつ、あなたに聞きたい。
今日の「セット付きカウンター」の中で、
「これ、実際に自分の習慣やトレーニングに使えそうだな」と感じた部分はありましたか?
その「使えそう」という感覚が、
あなたと“繰り返しカウントアプリ”を本当に結びつける芯になります。


