
조건문과 반복문은 프로그램의 흐름을 제어하는 핵심 문법입니다. 파이썬은 if로 조건 분기를, for와 while로 반복을 처리하며, 다른 언어와 달리 중괄호 없이 들여쓰기만으로 블록을 구분합니다.
이 두 문법은 프로그래밍 학습에서 사실상 첫 관문에 해당합니다. 변수와 자료형이 "데이터를 다루는 법"이라면, 조건문과 반복문은 "데이터를 어떤 순서와 조건으로 처리할지 결정하는 법"입니다. 실제로 대부분의 자동화 스크립트, 데이터 처리 코드는 조건 분기와 반복의 조합만으로도 상당 부분을 작성할 수 있습니다.
기능/스펙
조건문(if-elif-else)
score = 85
if score >= 90:
print("A등급")
elif score >= 80:
print("B등급")
else:
print("C등급 이하")
for 반복문: 리스트, 문자열, range 등 순회 가능한(iterable) 객체를 순서대로 처리합니다.
for i in range(3):
print(i) # 0, 1, 2 출력
while 반복문: 조건이 참인 동안 반복합니다.
count = 0
while count < 3:
print(count)
count += 1
반복 제어: break(반복 중단), continue(다음 반복으로 넘어감)를 함께 사용할 수 있습니다.
for i in range(5):
if i == 3:
break # i가 3이 되면 반복 종료
if i == 1:
continue # i가 1이면 건너뛰고 다음 반복으로
print(i) # 0, 2 출력
또한 파이썬은 for문을 한 줄로 압축하는 리스트 컴프리헨션(list comprehension) 문법도 지원합니다.
squares = [x ** 2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]
장단점
장점 - for ... in은 인덱스 계산 없이 컬렉션을 직관적으로 순회할 수 있음 - range(), enumerate() 등 보조 함수와 결합하면 코드가 간결해짐
단점 - while 반복문에서 종료 조건을 잘못 설정하면 무한 루프에 빠질 위험이 있음(이는 파이썬만의 문제가 아니라 반복문을 지원하는 대부분 언어의 공통적인 특성입니다) - 들여쓰기 오류가 곧 문법 오류로 이어지므로, 특히 중첩된 조건문/반복문에서 실수하기 쉬움 - 리스트 컴프리헨션은 간결하지만, 조건이나 중첩이 많아지면 오히려 일반 for문보다 읽기 어려워질 수 있음
비판적 시각
파이썬에는 다른 언어(C, Java 등)에 있는 switch-case 문이 전통적으로 없었고, 대신 if-elif-else 체인이나 딕셔너리 매핑으로 대체해왔다는 점이 자주 언급되는 한계였습니다. 다만 Python 공식 문서에 따르면 Python 3.10부터 구조적 패턴 매칭 문법인 match-case가 PEP 634로 도입되어, 이러한 제약이 부분적으로 해소되었습니다. match-case가 전통적인 switch와 완전히 동일한 의미론을 갖는 것은 아니며(패턴 매칭에 더 가까움), 이 차이를 정확히 이해하지 않고 사용하면 혼란을 줄 수 있다는 지적도 있습니다.
추천 대상
- 프로그래밍을 처음 배우는 입문자 (조건/반복은 알고리즘 사고의 출발점)
- 반복 작업 자동화, 데이터 처리 로직을 작성하려는 실무자
- 알고리즘 문제 풀이나 코딩 테스트를 준비하며 제어 흐름을 연습하려는 학습자
FAQ
Q1. 파이썬에도 switch문이 있나요? 전통적인 switch문은 없지만, Python 3.10부터 PEP 634에 따라 match-case 구조적 패턴 매칭 문법이 도입되었습니다.
Q2. for문과 while문 중 언제 무엇을 써야 하나요? 반복 횟수나 순회 대상이 명확할 때는 for, 조건이 충족되는 동안 반복 횟수를 미리 알 수 없을 때는 while을 사용하는 것이 일반적입니다.
Q3. 무한 루프에 빠지면 어떻게 하나요? while 조건이 항상 참이 되지 않도록 종료 조건(예: 카운터 증가, break문)을 반드시 포함해야 합니다.
Q4. 리스트 컴프리헨션은 꼭 써야 하나요? 필수는 아닙니다. 일반 for문으로도 동일한 결과를 만들 수 있으며, 리스트 컴프리헨션은 코드를 더 간결하게 표현하고 싶을 때 선택적으로 사용하는 문법입니다.
Q5. break와 continue를 함께 사용할 수 있나요? 네, 가능합니다. 하나의 반복문 안에서 조건에 따라 break로 반복을 종료하거나 continue로 특정 반복만 건너뛰도록 함께 사용할 수 있습니다.
출처
- Python 공식 문서, "The Python Tutorial – 4. More Control Flow Tools" (docs.python.org)
- Python Software Foundation, PEP 634 – Structural Pattern Matching