본문 바로가기
Python

2-6. 중첩 조건문과 반복문 활용

by Job-jisick 2025. 6. 22.
반응형

파이썬 중첩 조전문과 반복문 활용

안녕하세요! 지난 시간에는 반복문의 흐름을 중간에 제어하는 break와 continue 키워드에 대해 알아보았습니다. 이제 프로그램이 특정 조건에 따라 유연하게 반복을 멈추거나 건너뛸 수 있게 되었죠!

이번 시간에는 조건문(if, elif, else)과 반복문(for, while)을 **중첩(Nested)**하여 사용하는 방법에 대해 알아보겠습니다. 중첩이란 말 그대로 "안에 또 다른 것을 넣는" 것을 의미합니다. 조건문 안에 조건문, 반복문 안에 반복문, 또는 반복문 안에 조건문 등 다양한 조합이 가능하며, 이를 통해 훨씬 더 복잡하고 강력한 로직을 구현할 수 있습니다.

중첩된 구조는 코드의 들여쓰기 레벨이 깊어지므로, 이전에 배운 들여쓰기 규칙을 더욱 철저히 지키는 것이 중요합니다!


Part 1: 중첩 조건문 - if 안에 if

하나의 if 문 조건이 참일 때, 그 안에서 또 다른 if 문을 사용하여 세부적인 조건을 판단할 수 있습니다.

1. 기본 형식

Python
 
if 조건1:
    # 조건1이 True일 때 실행될 코드
    if 조건2:
        # 조건1이 True이고, 조건2도 True일 때 실행될 코드
        # (더 깊이 들여쓰기 됨)
    else:
        # 조건1이 True이고, 조건2는 False일 때 실행될 코드
else:
    # 조건1이 False일 때 실행될 코드

예시: 날씨와 미세먼지 상태에 따른 외출 결정

Python
 
# 파일 이름: nested_if_example.py

weather = "맑음"
fine_dust = "나쁨" # 좋음, 보통, 나쁨

if weather == "맑음":
    print("날씨가 맑습니다.")
    if fine_dust == "좋음":
        print("미세먼지도 좋으니, 야외 활동하기 좋습니다!")
    elif fine_dust == "보통":
        print("미세먼지가 보통이니, 가벼운 야외 활동은 괜찮습니다.")
    else: # fine_dust == "나쁨"
        print("미세먼지가 나쁘니, 실내 활동을 권장합니다.")
else:
    print("날씨가 맑지 않습니다. 야외 활동은 보류해주세요.")

print("\n--- 다른 경우 테스트 ---")
weather2 = "비"
fine_dust2 = "좋음"
if weather2 == "맑음":
    if fine_dust2 == "좋음":
        print(f"날씨: {weather2}, 미세먼지: {fine_dust2} -> 야외 활동 좋음")
    else:
        print(f"날씨: {weather2}, 미세먼지: {fine_dust2} -> 실내 활동 권장")
else:
    print(f"날씨: {weather2}, 미세먼지: {fine_dust2} -> 야외 활동 보류")

 
# 파일 이름: nested_if_example.py

weather = "맑음"
fine_dust = "나쁨" # 좋음, 보통, 나쁨

if weather == "맑음":
    print("날씨가 맑습니다.")
    if fine_dust == "좋음":
        print("미세먼지도 좋으니, 야외 활동하기 좋습니다!")
    elif fine_dust == "보통":
        print("미세먼지가 보통이니, 가벼운 야외 활동은 괜찮습니다.")
    else: # fine_dust == "나쁨"
        print("미세먼지가 나쁘니, 실내 활동을 권장합니다.")
else:
    print("날씨가 맑지 않습니다. 야외 활동은 보류해주세요.")

print("\n--- 다른 경우 테스트 ---")
weather2 = "비"
fine_dust2 = "좋음"
if weather2 == "맑음":
    if fine_dust2 == "좋음":
        print(f"날씨: {weather2}, 미세먼지: {fine_dust2} -> 야외 활동 좋음")
    else:
        print(f"날씨: {weather2}, 미세먼지: {fine_dust2} -> 실내 활동 권장")
else:
    print(f"날씨: {weather2}, 미세먼지: {fine_dust2} -> 야외 활동 보류")

[VS Code 터미널 출력]

파이썬 중첩 if 조건문 예시

Part 2: 중첩 반복문 - for 안에 for 또는 while 안에 while

반복문 안에 또 다른 반복문이 있는 형태를 중첩 반복문이라고 합니다. 바깥쪽 반복문이 한 번 실행될 때마다 안쪽 반복문은 완전히 실행됩니다.

1. for 문 중첩: 구구단 전체 출력하기

구구단 전체를 출력하는 것은 중첩 for 문의 대표적인 예시입니다.

Python
 
# 파일 이름: nested_for_gugudan.py

print("--- 구구단 전체 출력 ---")

# 첫 번째 for 문: 단(2단부터 9단까지)을 반복
for dan in range(2, 10): # 2, 3, ..., 9
    print(f"\n--- {dan}단 ---") # 각 단이 시작될 때 단 표시
    # 두 번째 for 문: 각 단의 곱해지는 숫자(1부터 9까지)를 반복
    for num in range(1, 10): # 1, 2, ..., 9
        result = dan * num
        print(f"{dan} x {num} = {result}")

print("\n--- 구구단 출력 완료 ---")
  • 바깥쪽 for 문(for dan in range(2, 10))이 dan = 2일 때, 안쪽 for 문(for num in range(1, 10))은 num = 1부터 num = 9까지 모두 실행됩니다.
  • 안쪽 for 문이 끝나면, 바깥쪽 for 문이 다음 dan = 3으로 넘어가고, 안쪽 for 문이 다시 1부터 9까지 모두 실행됩니다. 이 과정이 9단까지 반복됩니다.


 
# 파일 이름: nested_for_gugudan.py

print("--- 구구단 전체 출력 ---")

# 첫 번째 for 문: 단(2단부터 9단까지)을 반복
for dan in range(2, 10):
    print(f"\n--- {dan}단 ---")
    # 두 번째 for 문: 각 단의 곱해지는 숫자(1부터 9까지)를 반복
    for num in range(1, 10):
        result = dan * num
        print(f"{dan} x {num} = {result}")

print("\n--- 구구단 출력 완료 ---")

[VS Code 터미널 출력]

파이썬 중첩 for 반복문으로 구구단 전체 출력 예시

 

2. while 문 중첩: 별 피라미드 만들기

중첩 while 문을 사용하여 간단한 패턴을 만들어볼 수도 있습니다.

Python
 
# 파일 이름: nested_while_stars.py

rows = 5 # 만들 피라미드의 층 수

current_row = 1
while current_row <= rows: # 바깥쪽 while: 층 수를 반복
    stars_in_row = 1
    while stars_in_row <= current_row: # 안쪽 while: 현재 층의 별 개수를 반복
        print("*", end="") # 별을 출력하고 줄바꿈하지 않음
        stars_in_row += 1
    print() # 한 층의 별 출력이 끝나면 줄바꿈
    current_row += 1

print("\n별 피라미드 완성!")

 
# 파일 이름: nested_while_stars.py

rows = 5 # 만들 피라미드의 층 수

current_row = 1
while current_row <= rows: # 바깥쪽 while: 층 수를 반복
    stars_in_row = 1
    while stars_in_row <= current_row: # 안쪽 while: 현재 층의 별 개수를 반복
        print("*", end="")
        stars_in_row += 1
    print() # 한 층의 별 출력이 끝나면 줄바꿈
    current_row += 1

print("\n별 피라미드 완성!")

[VS Code 터미널 출력]

파이썬 중첩 while 반복문으로 별 피라미드 만들기 예시

 


Part 3: 반복문 안에 조건문 활용

가장 흔하게 사용되는 패턴 중 하나입니다. 반복문을 통해 여러 요소를 순회하면서, 각 요소가 특정 조건을 만족하는지에 따라 다른 작업을 수행할 때 사용됩니다.

예시: 학생들의 점수를 확인하고 합격/불합격 판별하기

Python
 
# 파일 이름: loop_with_if.py

student_scores = [85, 62, 90, 77, 45, 88]
passing_score = 60

print("--- 학생들의 시험 결과 ---")
for score in student_scores:
    if score >= passing_score:
        print(f"점수: {score}점 - 합격!")
    else:
        print(f"점수: {score}점 - 불합격!")

print("\n결과 확인 완료.")

 
# 파일 이름: loop_with_if.py

student_scores = [85, 62, 90, 77, 45, 88]
passing_score = 60

print("--- 학생들의 시험 결과 ---")
for score in student_scores:
    if score >= passing_score:
        print(f"점수: {score}점 - 합격!")
    else:
        print(f"점수: {score}점 - 불합격!")

print("\n결과 확인 완료.")

[VS Code 터미널 출력]

반복문 안에 조건문을 활용한 예시

 


Part 4: 중첩 구조 사용 시 주의사항

  • 들여쓰기: 중첩이 깊어질수록 들여쓰기가 매우 중요해집니다. 각 코드 블록이 올바른 들여쓰기 레벨을 가지고 있는지 반드시 확인해야 합니다. 잘못된 들여쓰기는 IndentationError를 발생시킵니다.
  • 가독성: 너무 많은 중첩은 코드의 가독성을 해칠 수 있습니다. 일반적으로 3단계 이상의 중첩은 피하고, 함수로 분리하는 등의 방법을 고려하는 것이 좋습니다.
  • 성능: 중첩 반복문은 반복 횟수가 곱해지므로, 처리해야 할 데이터의 양이 많을 때는 성능에 영향을 줄 수 있습니다. 효율적인 알고리즘을 고려하는 것이 중요합니다.

마무리하며

이번 시간에는 조건문과 반복문을 중첩하여 사용하는 방법에 대해 알아보았습니다. 중첩 조건문은 더 세밀한 판단을, 중첩 반복문은 다차원적인 반복 작업을 가능하게 합니다. 또한, 반복문 안에 조건문을 넣어 각 반복마다 다른 처리를 하는 것은 프로그래밍에서 매우 흔하고 중요한 기법입니다.

이제 여러분은 파이썬 프로그램의 흐름을 더욱 복잡하고 다양하게 제어할 수 있는 강력한 도구들을 익히게 되었습니다.

다음 챕터부터는 파이썬에서 데이터를 효율적으로 관리하고 조직하는 데 사용되는 자료구조의 기본에 대해 자세히 알아보겠습니다. 첫 번째로 **리스트(List)**의 정의와 사용법을 배우게 될 것입니다.


궁금한 점이 있다면 언제든지 질문해주세요! 다음 포스팅에서 만나요!

반응형

'Python' 카테고리의 다른 글

3-2. 튜플(Tuple)과 불변성  (0) 2025.06.23
3-1. 리스트(List)의 정의와 사용  (1) 2025.06.23
2-5. break, continue의 사용법  (0) 2025.06.22
2-4. for 반복문과 range()  (0) 2025.06.22
2-3. while 반복문  (0) 2025.06.21