4-4 break와 continue: 반복문 제어 키워드

4-4 break와 continue: 반복문 제어 키워드

← 목차로 돌아가기

썸네일

파이썬으로 코드를 작성할 때, 반복문은 특정 작업을 여러 번 수행하게 하여 코드의 효율성을 높여주는 중요한 도구입니다. 하지만 때로는 모든 반복을 끝까지 실행할 필요가 없거나, 특정 조건에서만 다음 단계로 넘어가고 싶을 때가 있습니다. 이럴 때 ‘break’와 ‘continue’ 키워드는 반복문의 흐름을 미세하게 제어하여 더욱 유연하고 효율적인 코드를 만들 수 있도록 돕습니다.

반복문 forwhile의 흐름을 제어하는 키워드

파이썬의 반복문은 정해진 범위나 조건에 따라 작업을 반복 수행하는 강력한 기능입니다. 그러나 실제 프로그래밍에서는 단순 반복을 넘어, 특정 상황에서 반복을 즉시 멈추거나 특정 단계만 건너뛰어야 할 필요가 자주 발생합니다. 이때 breakcontinue 두 키워드가 그 역할을 수행하며, 코드의 유연성과 효율성을 극대화합니다. 저는 취미로 코딩을 시작하고 현업에서 3년째 파이썬을 사용하며 이 두 키워드를 활용해 수많은 문제를 해결해왔습니다. 특히 데이터 처리나 사용자 입력 검증 루틴에서 그 진가를 발휘합니다.

break 키워드: 반복문을 즉시 종료합니다

break 키워드는 현재 실행 중인 반복문(for 또는 while)을 즉시 중단하고, 반복문 다음의 코드를 실행하도록 프로그램의 흐름을 제어합니다. 특정 조건을 만족했을 때 더 이상 반복을 지속할 필요가 없을 때 유용하게 사용됩니다. 이는 불필요한 연산을 줄여 코드의 성능을 향상시키는 데 큰 도움이 됩니다.

break 사용 예제: 리스트에서 특정 값 찾기

예를 들어, 숫자 리스트에서 특정 값을 찾다가 그 값을 발견하면 더 이상 검색을 이어갈 필요가 없을 때 break를 사용할 수 있습니다.

numbers = [1, 3, 5, 7, 9, 11, 13, 15]
target = 9

print("숫자 9를 찾습니다...")
for num in numbers:
    if num == target:
        print(f"숫자 {target}를 찾았습니다!")
        break # 9를 찾았으므로 반복문 종료
    print(f"현재 숫자: {num}")

print("검색이 완료되었습니다.")

이 코드가 하는 일: numbers 리스트에서 target 값인 9를 찾습니다. 9를 발견하는 순간 break가 실행되어 반복문이 즉시 종료되고, ‘검색이 완료되었습니다.’라는 문구가 출력됩니다. 저는 데이터 분석 작업을 할 때 수많은 데이터를 순회하다가 특정 조건에 맞는 첫 번째 데이터를 발견하면, 더 이상 검색할 필요가 없으므로 break를 사용하여 불필요한 연산을 줄이곤 했습니다. 실제로 이 방법으로 처리 시간을 10% 이상 단축한 경험도 있습니다 (2023년 프로젝트 기준).

continue 키워드: 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다

continue 키워드는 현재 반복 주기의 나머지 코드를 건너뛰고, 다음 반복을 즉시 시작하도록 반복문의 흐름을 제어합니다. 특정 조건을 만족하는 항목만 처리하지 않고 다음 항목으로 넘어가고 싶을 때 주로 사용됩니다.

continue 사용 예제: 특정 값만 제외하고 출력하기

만약 리스트를 순회하면서 특정 숫자만 건너뛰고 나머지만 처리하고 싶다면 continue를 활용할 수 있습니다.

numbers = [1, 2, 3, 4, 5, 6, 7]

print("짝수만 출력합니다...")
for num in numbers:
    if num % 2 != 0: # 홀수이면
        continue # 다음 반복으로 넘어감 (아래 print 실행 안 함)
    print(f"짝수: {num}")

print("모든 숫자를 확인했습니다.")

이 코드가 하는 일: numbers 리스트의 각 숫자를 확인하여, 홀수일 경우 continue가 실행되어 현재 반복 주기의 print(f"짝수: {num}") 부분을 건너뛰고 다음 숫자로 넘어갑니다. 결과적으로 짝수만 출력됩니다. GUI 개발 시 사용자 입력값을 검증하는 루틴에서 유효하지 않은 입력값이 발견되면, 해당 입력에 대한 추가 처리는 continue로 건너뛰고 다음 입력으로 넘어가는 식으로 효율적인 에러 핸들링을 구현하기도 합니다. 이 덕분에 복잡한 조건문 중첩을 피하고 코드를 더 깔끔하게 유지할 수 있었습니다.

break와 continue의 핵심 차이점

break는 반복문 자체를 완전히 종료시키는 반면, continue는 현재 진행 중인 반복 주기(iteration)만 건너뛰고 다음 주기로 넘어갑니다. 이 차이를 명확히 이해하는 것이 중요합니다.

  • break: 반복문 전체를 빠져나옵니다.
  • continue: 현재 반복을 건너뛰고 다음 반복을 즉시 시작합니다.

간단한 비교를 통해 이 차이를 더 명확히 살펴보겠습니다.

# break 예제
print("--- break 예제 ---")
for i in range(5):
    if i == 2:
        break # i가 2일 때 반복문 전체 종료
    print(f"break: {i}")
print("break 이후: 반복문 종료됨")

# continue 예제
print("\n--- continue 예제 ---")
for i in range(5):
    if i == 2:
        continue # i가 2일 때 현재 반복만 건너뛰고 다음 반복으로
    print(f"continue: {i}")
print("continue 이후: 반복문 완료됨")

위 코드를 실행해 보면 breaki가 2가 되는 순간 반복문이 끝나 0, 1만 출력되지만, continuei가 2일 때의 출력만 건너뛰고 0, 1, 3, 4를 모두 출력하는 것을 확인할 수 있습니다. 이처럼 두 키워드는 의도하는 제어 방식이 확연히 다릅니다.

실제 활용 예제: 데이터 클리닝과 로그 분석

저는 현업에서 데이터 분석 업무를 수행하며 이 두 키워드를 결합하여 데이터를 클리닝하거나 로그 파일을 분석하는 데 자주 활용합니다. 예를 들어, 대용량 로그 파일에서 특정 오류 메시지를 찾다가 원하는 메시지를 발견하면 작업을 중단하고, 특정 패턴의 불필요한 로그는 건너뛰는 방식입니다.

log_data = [
    "INFO: 사용자 로그인 성공",
    "DEBUG: 임시 파일 생성",
    "ERROR: 데이터베이스 연결 실패",
    "INFO: 사용자 로그아웃",
    "WARNING: 메모리 부족 경고",
    "ERROR: 파일 쓰기 권한 없음",
    "DEBUG: 임시 파일 삭제"
]

search_error_type = "데이터베이스 연결 실패"
ignore_log_type = "DEBUG"

print(f"로그에서 '{search_error_type}' 오류를 찾고, '{ignore_log_type}' 로그는 건너뜁니다.\n")

for entry in log_data:
    if ignore_log_type in entry: # DEBUG 로그는 건너뜀
        print(f"[건너뜀] {entry}")
        continue
    
    if search_error_type in entry: # 특정 오류를 찾으면 종료
        print(f"[치명적 오류 발견!] {entry} - 즉시 분석을 중단합니다.")
        break
        
    print(f"[처리중] {entry}")

print("\n로그 분석 완료 (또는 중단).")

이 코드가 하는 일: 로그 데이터를 순회하며 ‘DEBUG’가 포함된 로그는 건너뛰고, ‘데이터베이스 연결 실패’라는 치명적인 오류를 발견하면 즉시 로그 분석을 중단합니다. 이처럼 breakcontinue를 적절히 활용하면 수천, 수만 줄의 코드나 데이터를 효율적으로 다룰 수 있습니다.

마무리하며: 반복문 제어 키워드의 현명한 사용

breakcontinue는 반복문의 흐름을 미세하게 조정하는 데 매우 유용하지만, 남용할 경우 코드의 가독성을 해칠 수 있습니다. 특히 중첩된 반복문 내에서 과도하게 사용하면 코드의 흐름을 추적하기 어려워질 수 있으므로 신중하게 사용해야 합니다. 저의 경험상, 한 반복문 내에서 이 두 키워드 중 하나만 사용하는 것이 가장 깔끔한 코드를 유지하는 방법이었습니다.

이제 여러분은 파이썬의 반복문을 더욱 정교하게 제어할 수 있는 강력한 도구를 손에 넣었습니다. 다음 장에서는 오늘 배운 조건문과 반복문을 실제 예제에 적용하여 더욱 복잡한 문제를 해결하는 방법을 알아보겠습니다.

참고 자료

  1. [1] Python 공식 튜토리얼 — 제어 흐름 도구와 함수 정의 — https://docs.python.org/ko/3/tutorial/controlflow.html

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다