03. 제어문 (선택과 반복)
"코드는 기본적으로 위에서 아래로 흐릅니다. 하지만 가끔은 갈림길(if)을 만나기도 하고, 쳇바퀴(loop)를 돌기도 합니다."
1. 조건문 (if) - 갈림길
상황(조건)에 따라 다른 코드를 실행하고 싶을 때 사용합니다. 파이썬에서 들여쓰기(Indentation)는 선택이 아니라 생명입니다! (보통 스페이스 4칸)
graph TD
Start(("시작")) --> Check{"점수가 90점 이상?"}
Check -- Yes --> A["A학점 출력"]
Check -- No --> Check2{"80점 이상?"}
Check2 -- Yes --> B["B학점 출력"]
Check2 -- No --> C["재수강 출력"]
style Check fill:#fff9c4,stroke:#fbc02d
style Check2 fill:#fff9c4,stroke:#fbc02d
2. 반복문 (Loop) - 쳇바퀴
for 문 (범위 반복)
"~에 있는 것들을 하나씩 꺼내면서" 반복합니다.
1) 리스트에 있는 것 꺼내기
2) 횟수로 반복하기 (range)
리스트가 없어도 "그냥 5번 반복해!"라고 시킬 때는 range()를 씁니다.
while 문 (조건 반복)
"~인 동안 계속" 반복합니다. 언제 끝날지 모를 때 씁니다.
graph TD
Start(("시작")) --> Check{"체력이 남았나?"}
Check -- Yes --> Hit["체력 감소"]
Hit --> Check
Check -- No --> End(("게임 오버"))
style Check fill:#e1f5fe,stroke:#01579b
무한 루프(Infinite Loop) 조심
while 문을 쓸 때는 반드시 끝나는 조건을 만들어줘야 합니다.
hp가 줄어들지 않는다면, 컴퓨터는 지치지 않고 영원히 체력을 출력하다가 멈출 것입니다. (강제 종료: Ctrl + C)
3. 반복문 제어 (리모컨)
반복문을 돌다가 멈추거나 건너뛰고 싶을 때 씁니다.
break: 탈출! 반복문을 즉시 끝냅니다. (예: 범인 찾았으면 수색 종료)continue: 패스! 이번 순서만 건너뛰고 다음 순서로 넘어갑니다. (예: 3, 6, 9 게임에서 박수치기)
4. enumerate (번호표 붙이기)
반복문 돌 때 "내용물" 뿐만 아니라 "몇 번째(번호표)"인지도 필요할 때가 많습니다.
이때 count = 0 같은 변수를 따로 만들지 말고 enumerate를 쓰세요.
fruits = ["A", "B", "C"]
# i에는 번호, name에는 내용물이 들어갑니다
for i, name in enumerate(fruits):
print(f"{i}번: {name}")
# 결과 -> 0번: A, 1번: B...
5. 예외 처리 (try-except) - 안전장치
프로그램이 실행 중에 에러가 나서 "뻑" 하고 죽는 것을 막고 싶을 때 씁니다. "에러가 날 것 같으면 미리 대비(try)하고, 실제로 에러가 나면 수습(except)해라"라는 뜻입니다.
graph TD
Start(("시작")) --> Try["Try (시도)"]
Try --> Check{"에러 발생?"}
Check -- Yes --> Except["Except (수습)"]
Check -- No --> Pass["계속 진행"]
Except --> End(("종료"))
Pass --> End
style Check fill:#ffcdd2,stroke:#d32f2f
style Except fill:#ffccbc,stroke:#d84315
try:
# 에러가 날 수도 있는 위험한 코드
result = 10 / 0
print(f"결과는 {result}입니다.")
except ZeroDivisionError:
# 에러가 났을 때 실행할 코드 (수습)
print("0으로 나눌 수 없습니다! 1로 나눈 것으로 칠게요.")
result = 10 / 1
print("프로그램이 죽지 않고 잘 끝났습니다.")
"완벽한 프로그램은 없습니다. 하지만 잘 수습하는 프로그램은 만들 수 있습니다."