3. 프로그램의 구조를 쌓는다! 제어문
자료형을 바탕으로 제어문을 이용하여 프로그램의 구조를 만들어 보자.
3-1. if 문
f문은 조건의 참/거짓에 따라 프로그램의 흐름을 제어하는 핵심 제어문이.
들여쓰기와 콜론(:)은 필수 문법 요소이며, elif, else로 조건을 확장할 수 있다.
| 구분 | 설명 | 예시 | 결과 |
| 기본 구조 | 조건이 참(True)일 때만 코드 실행 | if 조건문: 실행문 | 조건이 거짓이면 실행 안 함 |
| 예시 | if True: print("참") |
참 | |
| 조건문 뒤 콜론( : ) | if문 문법상 필수, 블록 시작 의미 | if x > 0: | 콜론 필수 |
| 들여쓰기 (Indentation) |
조건이 참일 때 실행할 문장은 반드시 들여쓰기 해야 함 |
if x > 0: print(x) |
들여쓰기 틀리면 오류 |
| else 문 | 조건이 거짓일 때 실행되는 블록 | if x > 0: print("양수") else: print("음수") |
하나만 선택 실행 |
| elif 문 | 여러 조건을 순서대로 검사 | if x > 0: print("양수") elif x == 0: print("0") else: print("음수") |
위에서부터 검사 후 첫 True 실행 |
| 중첩 if문 | if문 안에 if문 포함 가능 | if x > 0: if x < 10: print("한 자리 양수") |
조건 중첩 가능 |
| 조건 표현식 (한 줄 if) | 간단한 조건문을 한 줄로 표현 | a = "양수" if x > 0 else "음수" | 삼항 연산처럼 동작 |
| 비교 연산자 | <, >, ==, !=, >=, <= | if a != b: | True/False 판단 a와 b가 같지 않다. |
| 논리 연산자 | and, or, not | if x > 0 and y < 10: | 조건 조합 |
| in / not in 연산자 | 포함 여부 판단 | ① if 'a' in ['a','b','c']: ② 'j' not in 'python' |
① True ② True |
| pass 문 | 실행할 내용이 없을 때 자리만 유지 | if x < 0: pass |
아무 일도 안 함 |
3-2 while문
while문은 조건이 참인 동안 계속 반복하며, 반복 중 조건 변화가 없으면 무한루프에 빠질 수 있다.
break, continue, else를 함께 사용하면 유연하게 제어 가능.
| 구분 | 설명 | 예시 | 결과/참고 |
| 기본 구조 | 조건이 참(True)인 동안 문장을 반복 실행 |
while 조건문: 실행문 |
조건이 거짓(False) 되면 종료 |
| 예시 | i = 0 while i < 3: print(i) i += 1 |
0 1 2 | |
| 무한 루프 | 조건이 항상 참이면 계속 반복 | while True: print("hi") |
Ctrl + C 로 중단 |
| 조건식 생략 주의 |
while: 만 쓰면 오류 반드시 조건 필요 |
SyntaxError 발생 | |
| break문 | 반복 중간에 강제 종료 | while True: if x == 5: break |
조건 만족 시 루프 탈출 |
| continue문 | 이후 코드 건너뛰고 다음 반복으로 이동 |
for i in range(5): if i == 2: continue print(i) |
2만 출력 생략 |
| 무한루프 활용 예 |
사용자 입력 반복 | while True: input_data = input() if input_data == 'exit': break |
'exit' 입력 시 종료 |
| while + else | while문이 정상 종료될 때 (=break 없이) else 실행 |
i = 0 while i < 3: i += 1 else: print("끝") |
조건 False로 종료 시 "끝" 출력 |
| 변수 제어 주의 | 반복 조건에 영향을 주는 변수 변경 필수 |
i += 1 누락 시 무한루프 | 조건 변화 없으면 종료 안 됨 |
3-3. for문
for문은 문장 구조가 한눈에 들어온다.
반복 가능한 객체(iterable)의 요소를 하나씩 꺼내 실행하는 제어문이며, range()와 함께 수치 반복, break/continue/else로 제어, 리스트 내포로 간결한 리스트 생성이 가능하다.
| 구분 | 설명 | 예시 | 결과 |
| 기본 구조 | 시퀀스(리스트, 튜플, 문자열 등)의 요소를 하나씩 꺼내 반복 | for 변수 in 리스트(또는 튜플, 문자열): 실행문 |
각 원소를 순서대로 변수에 대입 |
| 기본 예시 | for i in [1, 2, 3]: print(i) |
1 2 3 | |
| 문자열 반복 | 문자열의 각 문자 반복 | for ch in "Hi": print(ch) |
H, i |
| 튜플, 딕셔너리 반복 | 튜플은 원소 단위로, 딕셔너리는 기본적으로 키를 반복 |
for key in {'a':1, 'b':2}: print(key) |
a, b |
| 딕셔너리 key/value 동시 반복 |
.items() 사용 | for k, v in a.items(): print(k, v) |
a 1, b 2 |
| range() 함수 | 일정한 범위의 숫자 생성 | for i in range(3): print(i) |
0 1 2 |
| range (start, end, step) |
시작~끝-1까지, 간격 지정 가능 | range(1,10,2) | 1,3,5,7,9 |
| 합계 구하기 예시 | total = 0 for i in range(1, 11): total += i print(total) |
1부터 11까지의 합 = 55 |
|
| 중첩 for문 | for문 안에 for문 가능 | for i in [1,2,3]: for j in [4,5,6]: print(i,j) |
1,2,3,4,5,6 |
| break | 반복 도중 조건 만족 시 즉시 탈출 | for i in range(10): if i == 5: break |
0 1 2 3 4 |
| continue | 해당 반복만 건너뛰고 다음으로 진행 | for i in range(5): if i==2: continue print(i) |
0,1,3,4 |
| for + else | 반복이 정상 종료되면 else 실행 (break로 중단 시 else 미실행) |
for i in range(3): print(i) else: print("끝") |
0 1 2 끝 |
| 리스트 내포 (List Comprehension) |
간결하게 리스트 생성 | [x*2 for x in [1,2,3]] | [2,4,6] |
| 리스트 내포 + 조건문 | 조건을 만족하는 원소만 포함 | [x for x in range(10) if x % 2 == 0] | [0,2,4,6,8] |
'미래 먹거리를 위하여' 카테고리의 다른 글
| [파이썬 정복하기] 점프 투 파이썬 5장 – 파이썬 날개 달기 ① (책 없이 시작하기) (0) | 2025.10.22 |
|---|---|
| [파이썬 정복하기] 점프 투 파이썬 4장 – 파이썬의 입출력 (책 없이 시작하기) (0) | 2025.10.21 |
| [파이썬 정복하기] 점프 투 파이썬 2장 – 파이썬 프로그래밍의 기초, 자료형 ② (책 없이 시작하기) (0) | 2025.10.19 |
| [파이썬 정복하기] 점프 투 파이썬 2장 – 파이썬 프로그래밍의 기초, 자료형 ① (책 없이 시작하기) (0) | 2025.10.18 |
| [파이썬 정복하기] 점프 투 파이썬 1장 – 파이썬(Python)이란 무엇인가? (책 없이 시작하기) (1) | 2025.10.17 |