Python 기초

중첩 루프

반복문은 중첩하여 사용될 수 있습니다. 즉 반복문 안에 다른 반복문이 포함될 수 있습니다. 이러한 형태를 중첩 반복문(nested loop)라고 합니다.

외부에 위치하는 반복문을 외부 반복문(outer loop)라고 하고 안쪽의 반복문을 내부 반복문(inner loop)라고 합니다.

내부 반복문은 외부 반복문이 한번 반복할 때마다 새롭게 실행됩니다.

 

큰 다람쥐통 안에 작은 다람쥐통이 있는 형태가 중첩 루프입니다.

 

중첩 반복문은 실제 프로그래밍에서 자주 등장합니다. 예를 들어 사각형과 비슷한 데이터를 처리하는데 유용합니다.

아래 예제는 * 기호를 사각형 모양으로 출력하는데 주의할 점은 외부의 for 루프가 반복시키는 문장이 2개 이상이라는 것입니다.

반드시 이들을 블록으로 만들어 주어야 하며 그렇지 않으면 외부 for 문의 바로 아래에 위치한 문장만 반복됩니다.

# 중첩 for 문을 이용하여 * 기호를 사각형 모양으로 출력하는 프로그램
for y in range(5):
	for x in range(10):
		print("*", end = "")

	print("")	# 내부 반복문이 종료될 때마다 실행

 

<실행 결과>

**********
**********
**********
**********
**********

 

도전 과제

1. 피타고라스의 정리는 직각 삼각형에서 직각을 낀 두 변의 길이를 a, b라고 하고, 빗변의 길이를 c라고 하면 a^2 + b^2 = c^2 의 수식이 성립합니다.

각 변의 길이가 100보다 작은 삼각형 중에서 피타고라스의 정리가 성립하는 직각삼각형은 몇 개나 있을까요?

봉민이는 수학적으로 풀지 못해 파이썬 프로그램을 통해 풀어보려고 합니다.

3중 반복문을 이용하여 피타고라스의 정리를 만족하는 3개의 정수를 찾도록 합시다.

  1. 첫 번째 반복 루프는 a를 1에서 100까지 반복시킵니다.
  2. 두 번째 반복 루프는 b를 1부터 100까지 반복시킵니다.
  3. 세 번째 반복 루프는 c를 1부터 100까지 반복시킵니다.

중첩 반복문의 가장 안족에서 피타고라스의 수식을 검사하여 수식이 만족되면 화면에 a, b, c를 출력하면 됩니다.

 

<실행 결과>

3 4 5
4 3 5
5 12 13
6 8 10
...(중략)...
80 39 89
80 60 100
84 13 85
84 35 91
96 28 100

 


2. 봉민이는 라스베가스 도박장에서 큰 돈을 따고 싶은 욕망이 있지만 아직 그렇게 많은 돈이 없어 파이썬 프로그램으로 대신 해보려 합니다.

주사위를 2개 던졌을 때 합이 6이 되는 경우와 주사위 3개를 사용하여 합이 10이 되는 경우를 전부 출력해봅시다.

 

<실행 결과>

<주사위 2개를 던졌을 때 합이 6이 되는 경우>
1 5
2 4
3 3
4 2
5 1
<주사위 3개를 던졌을 때 합이 10이 되는 경우>
1 3 6
1 4 5
1 5 4
1 6 3
2 2 6
... (중략) ...
5 3 2
5 4 1
6 1 3
6 2 2
6 3 1

 


3. 아래 실행 결과와 같이 정수를 1부터 10까지 1씩 증가시키면서 n - 제곱값을 테이블 형식으로 출력하는 프로그램을 작성해봅시다.

 

<실행 결과>

x ** 1  x ** 2  x ** 3  x ** 4  x ** 5
1       1       1       1       1
2       4       8       16      32
3       9       27      81      243
4       16      64      256     1024
5       25      125     625     3125
6       36      216     1296    7776
7       49      343     2401    16807
8       64      512     4096    32768
9       81      729     6561    59049
10      100     1000    10000   100000