파이썬34번4 MIN
break와 continue: 루프 흐름 세밀하게 제어하기
Python break와 continue의 동작 차이, 중첩 루프 탈출 전략(플래그·함수·예외), continue vs 컴프리헨션 비교, 실전 패턴을 정리합니다.
이 글은 PALDYN Tech Blog의 글입니다.원문 보기
지난 글에서 while 루프의 기본 흐름을 살펴봤다. 루프 안에서 반복을 중단하거나 특정 회차를 건너뛰어야 할 때 break와 continue를 사용한다. 두 키워드는 이름이 비슷하지만 동작이 완전히 다르다.
break — 루프 완전 탈출
break를 만나면 현재 루프 전체를 즉시 종료하고 루프 바깥 다음 코드로 이동한다.
for n in range(10):
if n == 5:
break
print(n)
# 0 1 2 3 4
n == 5가 되는 순간 for 루프가 종료된다. 5 이후 6, 7, 8, 9는 출력되지 않는다.
while 루프에서도 동일하다.
total = 0
i = 0
while True:
total += i
i += 1
if total > 100:
break
print(f"합계 {total}, 마지막 i={i}")
continue — 현재 회차만 건너뜀
continue를 만나면 현재 반복의 나머지 코드를 건너뛰고 다음 반복으로 즉시 이동한다. 루프 자체는 계속된다.
for n in range(6):
if n % 2 == 0:
continue # 짝수는 건너뜀
print(n)
# 1 3 5
n=0, 2, 4일 때는 continue로 print(n) 을 건너뛰고 다음 값으로 넘어간다.
중첩 루프에서 break
break는 가장 안쪽 루프만 탈출한다. 바깥 루프는 계속 실행된다.
for i in range(3):
for j in range(3):
if j == 1:
break # 안쪽 for만 탈출
print(i, j)
# 0 0
# 1 0
# 2 0
j == 1이 되면 안쪽 루프를 탈출하지만 바깥 for i 루프는 계속 돌아 i=1, 2 도 실행된다.
중첩 루프 전체 탈출 전략
방법 1: 플래그 변수
found = False
for row in matrix:
for cell in row:
if cell == target:
found = True
break
if found:
break
방법 2: 함수 + return (가장 권장)
def find_in_matrix(matrix, target):
for row in matrix:
for cell in row:
if cell == target:
return True
return False
함수로 감싸면 return으로 어느 깊이에서든 즉시 탈출할 수 있어 가장 깔끔하다.
continue vs 리스트 컴프리헨션
단순 필터링이라면 continue 대신 컴프리헨션이 더 Pythonic하다.
lines = ["# 주석", "코드1", "# 주석2", "코드2"]
# continue 방식
result = []
for line in lines:
if line.startswith("#"):
continue
result.append(line)
# 컴프리헨션 방식 (권장)
result = [l for l in lines if not l.startswith("#")]
단, 필터링 후 복잡한 처리가 있거나 부수 효과(파일 쓰기 등)가 필요하다면 continue 방식이 적합하다.
자주 하는 실수
# 실수: continue 뒤 코드가 절대 실행 안 됨
for n in range(5):
continue
print(n) # 절대 실행되지 않음
# 실수: 무한 루프 안에서 break 조건 누락
i = 0
while True:
i += 1
if i > 100:
pass # break를 pass로 실수 → 무한 루프
정리
break— 루프 전체 즉시 종료, 가장 안쪽 루프만 영향continue— 현재 회차만 건너뜀, 루프는 계속- 중첩 루프 전체 탈출엔 함수 +
return이 가장 깔끔 - 단순 필터는
continue보다 리스트 컴프리헨션이 Pythonic
지난 글: while 루프: 조건 기반 반복과 무한 루프 제어
다음 글: 루프의 else: break 없이 완주했을 때만 실행되는 블록
읽어주셔서 감사합니다. 😊

