Python 반복문 — for, while, break
이 토픽을 마치면
for와 while로 반복을 만들고, break와 continue로 흐름을 제어할 수 있습니다.
for문 — 정해진 횟수만큼 반복
python
# 리스트 순회fruits = ["사과", "바나나", "포도"]
for fruit in fruits: print(fruit)# 사과# 바나나# 포도for 변수 in 순회 가능한 것: — 리스트, 문자열, range 등을 하나씩 꺼내서 실행합니다.
range() — 숫자 범위 생성
python
# range(끝) — 0부터 끝-1까지for i in range(5): print(i)# 0, 1, 2, 3, 4
# range(시작, 끝)for i in range(2, 6): print(i)# 2, 3, 4, 5
# range(시작, 끝, 간격)for i in range(0, 10, 2): print(i)# 0, 2, 4, 6, 8range(5)는 0~4를 만들어냅니다 (5는 포함하지 않음). 거의 모든 프로그래밍 언어에서 범위는 **"끝값 미포함"**이 관례입니다.
while문 — 조건이 참인 동안 반복
python
count = 0
while count < 5: print(f"count = {count}") count += 1
# count = 0# count = 1# count = 2# count = 3# count = 4for는 "몇 번 반복할지 안다"면 적합하고, while은 "언제 끝날지 모른다"면 적합합니다.
무한 루프 주의
python
# ❌ 이러면 영원히 멈추지 않는다count = 0while count < 5: print(count) # count += 1을 빼먹으면 → 무한 루프!
# 의도적 무한 루프 (서버, 게임 등에서 사용)while True: command = input("> ") if command == "quit": break print(f"입력: {command}")while문을 쓸 때는 항상 "이 루프가 언제 끝나는가?"를 확인하세요.
break와 continue
break — 루프 탈출
python
# 3을 찾으면 즉시 종료for i in range(10): if i == 3: print("찾았다!") break print(i)# 0# 1# 2# 찾았다!break는 가장 가까운 루프 하나를 즉시 빠져나갑니다.
continue — 이번 반복만 건너뛰기
python
# 짝수만 건너뛰기for i in range(6): if i % 2 == 0: continue print(i)# 1# 3# 5continue는 루프를 끝내지 않고, 이번 회차만 건너뛰고 다음 반복으로 갑니다.
중첩 반복문
python
# 구구단 2~3단for dan in range(2, 4): print(f"--- {dan}단 ---") for i in range(1, 10): print(f"{dan} x {i} = {dan * i}")반복문 안에 반복문을 넣을 수 있습니다. 바깥 루프가 한 바퀴 돌 때마다 안쪽 루프가 전체를 실행합니다.
enumerate — 인덱스와 값을 동시에
python
names = ["김훈", "이수", "박진"]
# 인덱스가 필요할 때for i, name in enumerate(names): print(f"{i}: {name}")# 0: 김훈# 1: 이수# 2: 박진enumerate()는 (인덱스, 값) 쌍을 만들어줍니다. for i in range(len(names))보다 깔끔합니다.
for vs while 선택 기준
| 상황 | 추천 |
|---|---|
| 리스트/범위 순회 | for |
| 횟수가 정해져 있음 | for + range() |
| 조건 기반 반복 | while |
| 사용자 입력 대기 | while True + break |
대부분의 경우 for를 쓰게 됩니다. while은 "끝나는 조건이 데이터가 아니라 상태"일 때 사용합니다.