ARMtech

Python入門:多重ループ

多重ループ

Pythonでは、繰り返し処理をwhile文とfor文で実現できます。また、while文、for文の中に別のwhile文、for文を入れることもできます。
そのような構造を多重ループネストしたループといいます。

for a in range(3) :

for b in range(3) :

print(a,b)

実行結果
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2

上のコードでは、for文を2重にネストしています。実行結果から、外側のfor文が1周するごとに内側のfor文が全周していることがわかります。

for a in range(3) :

for b in range(3) :

if b == 2 :

break

print(a,b)

実行結果
0 0
0 1
1 0
1 1
2 0
2 1

上のコードでは、内側のfor文にbreak文をいれています。実行結果から、内側のfor文のbreak文は、内側のfor文のみを中断し、外側のfor文には影響しないことがわかります。これは、continue文も同じです。

外側のfor文をbreak文で中断したい場合は次のようなコードにします。

for a in range(3) :

if a == 2 :

break

for b in range(3) :

print(a,b)

実行結果
0 0
0 1
0 2
1 0
1 1
1 2

多重ループの応用

2重ループを応用すると、表や図などの2次元のものを再現することができます。

#九九の表を作るプログラム

a = 1

while a < 10 :

b = 1

while b < 10 :

print(str(a*b).rjust(3," "),end="")

b += 1

print()

a += 1

実行結果
  1  2  3  4  5  6  7  8  9
  2  4  6  8 10 12 14 16 18
  3  6  9 12 15 18 21 24 27
  4  8 12 16 20 24 28 32 36
  5 10 15 20 25 30 35 40 45
  6 12 18 24 30 36 42 48 54
  7 14 21 28 35 42 49 56 63
  8 16 24 32 40 48 56 64 72
  9 18 27 36 45 54 63 72 81

上のコードは、while文を2重にして九九表を表示するプログラムです。ここではrjust関数を使ってマス間隔の右寄せにしています。また、print関数にend=""と記述することで、改行せずに出力することができます。

ループさせる変数を座標に見立てると平面図形を表示することもできます。 

#円を表示させるプログラム

r = input(円の半径を入力してください>>)

for y in range(20) :

for x in range(20) :

if (x-10)**2 + (y-10)**2 - r**2 < 0 : #中心の座標が(10,10)で半径が変数rの円の中に座標(x,y)があればTrue

print("■",end=" ")

else :

print(" ",end="")

print()

実行結果
円の半径を入力してください>>4







                     ■ ■ ■ ■ ■               

                  ■ ■ ■ ■ ■ ■ ■             

                  ■ ■ ■ ■ ■ ■ ■             

                  ■ ■ ■ ■ ■ ■ ■             

                  ■ ■ ■ ■ ■ ■ ■               

                  ■ ■ ■ ■ ■ ■ ■             

                     ■ ■ ■ ■ ■               








円の半径を入力してください>>8



                  ■ ■ ■ ■ ■ ■ ■             

            ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■         

         ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■       

         ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■       

      ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■     

      ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■     

      ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■     

      ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■     

      ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■     

      ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■     

      ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■     

         ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■       

         ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■        

            ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■         

                  ■ ■ ■ ■ ■ ■ ■             




上のコードでは、円の方程式を用いて円を表示させています。

練習問題

では、これまでの内容をもとに次のプログラムを作ってみましょう!

  1. 小数第1位まで表示されるストップウィッチを3秒間進めるプログラム

解答例※あくまで一例です。

(1)

for time in range(3) :

for tick in range(10) :

print("{time}.{tick}")

実行結果

0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2.0
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9

最後に

この記事では、Pythonでの多重ループの扱い方について解説しました。 もっとPythonを学びたい!という方はこちらの記事でPythonの基本的な構文を学習することが出来ますのでぜひ立ち寄ってみてください!

<   >
© 2024 ARMtech