제어 흐름 — if · for · while · 컴프리헨션 기초
제어 흐름 — if · for · while · 컴프리헨션 기초
🎯 이 lesson 을 읽고 나면
이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.
- ▸✅ 들여쓰기 규칙 (PEP 8 — 4 spaces)
- ▸✅ enumerate · zip · range 의 정확한 사용
- ▸✅ 리스트 컴프리헨션 + dict comprehension
학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.
if · elif · else — *조건 분기 + 들여쓰기 규칙*
if / elif / else — 조건 분기의 기본
핵심 규칙:
- ▸조건 줄 끝에 콜론
:필수 - ▸다음 줄은 4칸 들여쓰기 (블록)
- ▸
else if가 아니라elif— Python 만의 줄임말
비교 연산자: == (같음) / != (다름) / >= (이상) / <= (이하) / < / >
조건 표현식 (삼항) — 한 줄 if
{값1} if {조건} else {값2} — JS 의 cond ? a : b 와 같지만 순서가 다름 (값이 앞).
truthy / falsy — if 의 숨은 규칙
Python falsy 7가지: 0, 0.0, '', None, False, [], {}, (). 빈 컬렉션도 falsy.
들여쓰기 규칙 — SyntaxError 1위 원인
Python 은 { } 대신 들여쓰기 깊이 로 블록을 구분. 깊이가 같으면 같은 블록.
흔한 에러 3가지
1. IndentationError: expected an indented block
→ if 다음 줄엔 반드시 들여쓰기. 빈 블록은 pass:
2. IndentationError: unexpected indent
3. 탭과 스페이스 혼용 — 눈에 안 보이는 함정
→ PEP 8 표준: 스페이스 4칸. 에디터에서 Tab → 4 Space 자동 변환 설정.
for · while · range · enumerate · zip — *반복문 전체*
기본 for — 반복 가능한 객체 순회
Java 의 for(int i=0; i<n; i++) 같은 인덱스 기반 for 가 없습니다. 인덱스는 range() 로 만듦.
range() — 숫자 시퀀스
끝값 미포함. Java/JS 와 같음.
enumerate() — 인덱스 + 값 동시에
인덱스가 필요할 땐 enumerate. range(len(arr)) 는 비파이썬스러움.
zip() — 여러 시퀀스 동시 순회
짧은 쪽 기준 으로 자동 멈춤. 두 컬렉션의 대응되는 원소 처리 패턴.
while 과 break · continue
for-else — 별난 문법
loop 가 정상 종료되면 else 실행. 검색 패턴에 유용 — 다른 언어엔 없는 Python 만의 기능.
리스트 컴프리헨션 — *Python 의 정체성*
기본 형태
4줄 → 1줄. AI 가 생성하는 Python 코드의 반 이상 이 이 문법.
조건 필터 추가
뒤에 if — 필터. JS 의 .filter().map() 한 줄로 합친 셈.
중첩 컴프리헨션
for 가 여러 개 — 외부 for 가 바깥 루프.
딕트 컴프리헨션
셋 컴프리헨션
가독성의 한계
2단계 이상 + 복잡한 조건 이면 일반 for 가 더 읽기 쉬움. 컴프리헨션은 짧을 때만 강력.
🤖 AI 에게 이렇게 요청해보세요
- ▸"이 for 루프를 리스트 컴프리헨션으로 바꿔줘"
- ▸"이 enumerate + zip 조합을 한 번에 풀어줘"
- ▸"이 들여쓰기 에러를 고쳐줘" (코드 전체를 같이 보내면 즉시 해결)