본문 바로가기
코딩교육/Python 초등교육에서 전문가까지

2단계 : 3. 반복문 (중첩 반복문 활용)

by 제리토리 2025. 3. 6.
728x90
반응형

 

1. 중첩 반복문(Nested Loop)이란?

 

중첩 반복문(Nested Loop)은 반복문 안에 또 다른 반복문이 포함된 구조를 의미합니다. Python에서는 for 문과 while 문 모두 중첩해서 사용할 수 있으며, 이를 통해 이중 루프(2D 데이터 구조), 다중 패턴 처리, 테이블 연산, 중첩된 조건 평가 등을 수행할 수 있습니다.

 

 

2. 중첩 for 문 활용

㉮ 기본 구조

for 바깥반복변수 in 반복가능한객체1:
    for 안쪽반복변수 in 반복가능한객체2:
        실행한 코드

바깥 반복문(Outer Loop)이 한 번 실행될 때마다 안쪽 반복문(Inner Loop)이 전체 반복을 수행합니다.

 

㉯ 2D 리스트(행렬) 출력 예제

 

중첩 for 문을 사용하면 **2D 리스트(행렬)**의 각 요소를 순회할 수 있습니다.

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for row in matrix:
    for element in row:
        print(element, end=" ")
    print()  # 줄바꿈

출력결과

1 2 3
4 5 6
7 8 9

 

㉰ 별(★) 패턴 출력

 

중첩 for 문을 활용하여 다양한 패턴 출력이 가능합니다.

 

1. 왼쪽 정렬된 삼각형

rows = 5

for i in range(1, row + 1):
    for j in range(i):
        print("*", end="")
    print() # 줄바끔

출력결과

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

 

2. 오른쪽 정렬된 삼각형

rows = 5

for i in range(1, rows + 1):
    print(" " * (rows - i) + "*" * i)

출력결과

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

 

3. 피라미드 형태

rows = 5

for i in range(1, rows + 1):
    print(" " * (rows - i) + "*" * (2 * i - 1))

출력결과

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

 

㉱ 구구단 출력

for i in range(2, 10):  # 2단부터 9단까지
    for j in range(1, 10):  # 각 단의 곱셈 수행
        print(f"{i} x {j} = {i * j}", end="\t")
    print()

출력결과

2 x 1 = 2	2 x 2 = 4	2 x 3 = 6	...
3 x 1 = 3	3 x 2 = 6	3 x 3 = 9	...
...

end="\t": 탭 간격을 추가하여 가로 정렬

중첩 for 문을 사용하여 2단부터 9단까지 반복 실행

 

 

3. 중첩 while 문 활용

 

㉮ 기본구조

while 조건1:
    while 조건2:
        실행할 코드

바깥 while 문이 실행될 때마다 안쪽 while 문이 조건을 만족하는 동안 실행됩니다.

 

㉯ while 문을 활용한 패턴 출력

rows = 5
i = 1

while i <= rows:
    j = 1
    while j <= i:
        print("*", end="")
        j += 1
    print()
    i += 1

출력결과

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

 

㉰ while 문을 활용한 사용자 입력 대기 프로그램

while True:
    num = int(input("1~10 사이의 숫자를 입력하세요 (0 입력 시 종료): "))
    
    if num == 0:
        print("프로그램을 종료합니다.")
        break # 종료 조건
    elif 1 <= num <= 10:
        print(f"입력한 숫자: {num}")
    else:
        print("유효한 숫자가 아닙니다, 다시 입력하세요.")

출력결과

1~10 사이의 숫자를 입력하세요 (0 입력 시 종료): 5
입력한 숫자: 5
1~10 사이의 숫자를 입력하세요 (0 입력 시 종료): 0
프로그램을 종료합니다.

무한 루프를 활용하여 사용자 입력을 반복

0을 입력하면 break로 반복 종료

 

4. 중첩 반복문 활용 예제

 

㉮ 체스판 만들기 (홀짝 패턴)

size = 8

for i in range(size):
    for j in range(size):
        if (i + j) % 2 == 0:
            print("■", end=" ")
        else:
            print("□", end=" ")
    print()

출력결과

■ □ ■ □ ■ □ ■ □
□ ■ □ ■ □ ■ □ ■
■ □ ■ □ ■ □ ■ □
□ ■ □ ■ □ ■ □ ■
■ □ ■ □ ■ □ ■ □
□ ■ □ ■ □ ■ □ ■
■ □ ■ □ ■ □ ■ □
□ ■ □ ■ □ ■ □ ■

짝수 인덱스 → 검은색(■)

홀수 인덱스 → 흰색(□)

체스판과 같은 패턴을 만들 수 있음

 

㉯ 로또 번호 생성기

import random

lotto_numbers = []

while len(lotto_numbers) < 6:
    num = random.randint(1, 45)
    if num not in lotto_numbers:  # 중복 방지
         lotto_numbers.append(num)
print("이번 주 로또 번호:", sorted(lotto_numbers))

while 문을 활용하여 6개의 랜덤한 숫자 생성

중복을 방지하기 위해 not in 연산자 사용

sorted()로 최종 결과를 정렬하여 출력

 

5. 요약

 

중첩 반복문은 반복문 내부에 또 다른 반복문이 있는 구조로, 2D 데이터 처리, 패턴 출력, 테이블 연산 등에서 자주 사용됨.

for 문을 활용하면 리스트, 행렬, 구구단, 패턴 출력 등을 쉽게 구현 가능.

while 문을 활용하면 입력 대기 프로그램, 무한 루프, 숫자 검증 등에서 효과적.

break 와 continue를 활용하여 반복문 흐름을 제어하면 더 효율적인 코드 작성 가능.

 

728x90
반응형