JavaScript | 1 日 90 分 × 7 日アプリ学習:ランダム表示アプリ(初級編)

Python
スポンサーリンク

6日目のゴールと今日やること

6日目のテーマは
「繰り返しを“組み合わせて使う”感覚をつかむこと」 です。

ここまでであなたは、

  • forrange で回数を数える
  • ステップを変えて、数え方をデザインする
  • 「今」と「残り」を同時に扱うトレーニングカウンターを書く

ところまで来ました。

今日はここに、

  • 「セット」という考え方を足す
  • 繰り返しの中で、さらに繰り返す(入れ子構造)
  • 「大きな単位」と「小さな単位」を分けてカウントする

という、“二重のカウント” を入れていきます。

いきなり難しいことはしません。
でも、「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つ目:「今」と「残り」はセットにも回数にも使える

itotal - i だけでなく、

ssets - s
rreps_per_set - r

のように、
「今どこにいるか」と「あとどれくらいか」を
いろんなレベルで考えられるようになると、
アプリとしての表現力が一気に広がります。


7日目へのつなぎ

6日目までであなたは、

  • セット × 回数という二重のカウントを扱える
  • 外側と内側のループの役割を分けて考えられる
  • 「今」と「残り」をセット単位でも考えられる

というところまで来ました。

7日目は、この1週間の「繰り返しカウントアプリ」を総まとめして、

  • 自分で「こういうカウンターがほしい」と決める
  • それをコードとして形にする

という、「自分のアイデアをアプリにする一歩目」を踏みます。

最後にひとつ、あなたに聞きたい。

今日の「セット付きカウンター」の中で、
「これ、実際に自分の習慣やトレーニングに使えそうだな」と感じた部分はありましたか?

その「使えそう」という感覚が、
あなたと“繰り返しカウントアプリ”を本当に結びつける芯になります。

タイトルとURLをコピーしました