반복문은 중첩하여 사용될 수 있습니다. 즉 반복문 안에 다른 반복문이 포함될 수 있습니다. 이러한 형태를 중첩 반복문(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라고 하면 의 수식이 성립합니다.
각 변의 길이가 100보다 작은 삼각형 중에서 피타고라스의 정리가 성립하는 직각삼각형은 몇 개나 있을까요?
봉민이는 수학적으로 풀지 못해 파이썬 프로그램을 통해 풀어보려고 합니다.
3중 반복문을 이용하여 피타고라스의 정리를 만족하는 3개의 정수를 찾도록 합시다.
중첩 반복문의 가장 안족에서 피타고라스의 수식을 검사하여 수식이 만족되면 화면에 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