プログラムの構造は,
max = 9 dan = 1 while dan <= max: 「各段を 1 行に印字し改行する」 dan = dan + 1となります. 「各段を 1 行に印字し改行する」の部分は, もちろん Python プログラムではなく, 単なる説明です. この部分には前の例が使えます.
# 2 重ループの例 1 # 九九を印字 max = 9 dan = 1 while dan <= max: i = 1 while i <= max: print i * dan, i = i + 1 print dan = dan + 1 # プログラム終りdan の値が 1 から max までのループが外側にあり, このそれぞれ dan の値に 対して, i の値が 1 から max のループが行なわれます. つまり, dan = 1 の時に, i を 1 にして, i * dan を出力し, i の値を 1 増やして 2 にし, i * dan を出力し, ... , i の値を 1 増やして max にし, i * dan の値を 出力し, i の値を 1 増やして max + 1 にします. こうなると, 条件
i <= max
が満たされないので, 内側のループ(2 段に字下げされた
部分の実行が一旦終り, print で改行し, dan の値を 1 増やして 2 に
します. この dan の値 2 にたいして, i の値を再び 1 にして,..., という
作業を繰り返していくわけです. dan の値が max + 1 になった段階で,
外側のループが終了し, プログラムも終了します.