Supplementary Materials
MIT OpenCourseWare - Intro to CS & Programming in Python
2. Branching & Iteration
0. 제어문 개요
Python 프로그램
- 상황에 따라 다르게 동작하는 분기(branching)
- 작업을 반복하는 반복(iteration)
제어문
- 조건문
- if-else문 → 중첩 if문, 연속 if문
- 관계 연산자, 조건 연산자, 논리 연산자
- 반복문
- for문(횟수)
- while문(조건) → 무한 루프
- 중첩 반복문
제어 구조
- 프로그램의 실행 순서를 제어하는 구조로 크게 3가지가 있다.
- 순차 구조(Sequential): 명령어가 위에서 아래로 순서대로 실행되는 구조
- 선택 구조(Selection): 조건에 따라 실행할 명령을 선택하는 구조 (이번 장의 핵심)
- 반복 구조(Repetition): 특정 명령을 반복해서 실행하는 구조
1. 비교 연산과 논리 연산
조건문에 사용되는 연산이다.
비교식과 논리식의 결과는 True 또는 False이다.
1.1. 비교 연산자
두 값을 비교한다.
| 연산자 | 의미 |
|---|---|
> | 크다 |
>= | 크거나 같다 |
< | 작다 |
<= | 작거나 같다 |
== | 같다 |
!= | 다르다 |
sleep_time = 8
pset_time = 15
print(sleep_time > pset_time) # False주의사항
- 문자열 비교: 사전 순서로 비교된다.
- 실수 비교: 부동소수점 오차로 인해
==대신abs(a - b) < 0.00001과 같이 차이가 매우 작은지 확인하는 방식을 권장한다. - cf.
sqrt(3.0)**2는 3.0과 같지 않다.
1.2. 논리 연산자
여러 조건을 결합할 때 사용한다.
not a: 참과 거짓을 반대로 바꿈a and b: 둘 다 참일 때만Truea or b: 하나 이상 참이면True
derive = True
drink = False
both = drink and derive
print(both) # False드모르간의 법칙
not (A and B)는(not A) or (not B)와 같다.- 복잡한 논리식을 단순화할 때 사용한다.
# 드모르간의 법칙을 사용하여 이러한 논리식을 단순화할 수 있다.
if country != “한국” or province == “제주” :
shipping_cost = 80001.3. 조건 연산자
조건 연산자(Ternary Operator)
- 간단한 if-else 문을 한 줄로 표현할 때 사용한다.
변수 = (참 값 if 조건 else 거짓 값)
# if-else문
if price > 20000 :
shipping_cost = 0
else :
shipping_cost = 3000
# 조건 연산자
shipping_cost = ( 0 if price >= 20000 else 3000 )2. 조건문과 분기
조건문을 사용하면 조건에 따라 서로 다른 코드를 실행할 수 있다.
- 조건식(condition)이
True이면if블록을,False이면else블록을 실행한다. if·elif·else는 조건에 따라 실행 경로를 선택한다.- 거짓일 때 실행할 문장이 없다면
else절은 생략 가능하다.
if condition:
# condition이 True일 때 실행
elif another_condition:
# 앞 조건은 False이고 이 조건이 True일 때 실행
else:
# 모든 조건이 False일 때 실행cf.
- 콜론(:)은 복합문을 의미한다.
- pass 키워드는 “나중에 채워 넣겠음”을 의미한다.
예제
x = float(input("Enter a number for x: "))
y = float(input("Enter a number for y: "))
if x == y:
print("x and y are equal")
if y != 0:
print("therefore, x / y is", x / y)
elif x < y:
print("x is smaller")
else:
print("y is smaller")
print("thanks!")실행 흐름은 다음과 같다.
x == y이면 첫 번째 블록 실행- 그렇지 않고
x < y이면 두 번째 블록 실행 - 둘 다 아니면
x > y이므로else실행 - 마지막
print("thanks!")는 조건문 바깥이므로 항상 실행
=와 ==
초보자가 특히 주의해야 하는 차이이다.
=: 변수에 값을 저장하는 대입 연산자==: 두 값이 같은지 검사하는 비교 연산자
x = 3 # x에 3 저장
x == 3 # x가 3인지 검사블록과 들여쓰기
Python에서는 들여쓰기(indentation)가 코드 블록(block)을 정의한다.
- 들여쓰기가 같은 문장들이 하나의 블록을 형성한다.
if x == y:
print("같다") # 조건문 안
print("검사 완료") # 조건문 밖들여쓰기가 잘못되면 실행 흐름이 달라지거나 오류가 발생한다.
3. 확장 조건문
3.1. 연속 if 문(if-elif-else)
- 조건이 여러 개일 때 사용 (다중 선택)
- 예: 성적 처리 (90점 이상 A, 80점 이상 B, …), 수온에 따른 물의 상태 등
- 파이썬에는 타 언어의
switch문이 없으므로 주로elif를 사용한다.
3.2. 중첩 if 문(Nested if)
if문 안에 또 다른if문이 들어가는 구조- 예: 배송지가 ‘한국’이면서 가격이 ‘2만원 이상’인 경우 등 복합적인 조건을 단계별로 검사할 때 사용