1. 제어문의 개요

  • 제어문

    • 조건문
      • if-else문 중첩 if문, 연속 if문
      • 관계 연산자, 조건 연산자, 논리 연산자
    • 반복문
      • for문(횟수)
      • while문(조건) 무한 루프
      • 중첩 반복문
  • 제어 구조: 프로그램의 실행 순서를 제어하는 구조로 크게 3가지가 있다.

    • 순차 구조(Sequential): 명령어가 위에서 아래로 순서대로 실행되는 구조
    • 선택 구조(Selection): 조건에 따라 실행할 명령을 선택하는 구조 (이번 장의 핵심)
    • 반복 구조(Repetition): 특정 명령을 반복해서 실행하는 구조

2. 기본 조건문(if-else)

  • 기본 구조: 조건식이 참(True)이면 if 블록을, 거짓(False)이면 else 블록을 실행한다.
if 조건식:
	문장1 (참일 때 실행)
else:
	문장2 (거짓일 때 실행)
  • 블록(Block)

    • 파이썬에서는 들여쓰기(Indentation)가 매우 중요하다.
    • 들여쓰기가 같은 문장들이 하나의 블록을 형성한다.
  • else 생략

    • 거짓일 때 실행할 문장이 없다면 else 절은 생략 가능하다.
  • cf.

    • 콜론(:)은 복합문을 의미한다.
    • pass 키워드는 “나중에 채워 넣겠음”을 의미한다.

3. 연산자(Operators)

조건문에 사용되는 중요한 연산자들이다.

3.1. 관계 연산자

  • 관계 연산자(Relational Operators)
    • 두 값을 비교하여 참(True) 또는 거짓(False)을 반환한다. - Boolean Value
    • == (같다), != (다르다)
    • >, <, >=, <= (크다, 작다, 크거나 같다, 작거나 같다)
수학적 표기연산
x == y
x != y
  • 주의사항
    • 문자열 비교: 사전 순서로 비교된다.
    • 실수 비교: 부동소수점 오차로 인해 == 대신 abs(a - b) < 0.00001과 같이 차이가 매우 작은지 확인하는 방식을 권장한다.
    • cf. sqrt(3.0)**2는 3.0과 같지 않다.

3.2. 논리 연산자

  • 논리 연산자(Logical Operators)
  • 여러 조건을 결합할 때 사용한다.
    • and: 둘 다 참이어야 참
    • or: 둘 중 하나만 참이어도 참
    • not: 참/거짓을 반대로 뒤집음
    • 드모르간의 법칙: not (A and B)(not A) or (not B)와 같다. (복잡한 논리식을 단순화할 때 사용)
if not ( country == “한국” and province != “제주” )
	shipping_cost = 8000
 
# 드모르간의 법칙을 사용하여 이러한 논리식을 단순화할 수 있다.
 
if country != “한국” or province == “제주” :
	shipping_cost = 8000

3.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 )

4. 확장 조건문

4.1. 중첩 if 문(Nested if)

  • if 문 안에 또 다른 if 문이 들어가는 구조
    • 예: 배송지가 ‘한국’이면서 가격이 ‘2만원 이상’인 경우 등 복합적인 조건을 단계별로 검사할 때 사용

4.2. 연속 if 문(if-elif-else)

  • 조건이 여러 개일 때 사용 (다중 선택)
    • 예: 성적 처리 (90점 이상 A, 80점 이상 B, …), 수온에 따른 물의 상태 등
    • 파이썬에는 타 언어의 switch 문이 없으므로 주로 elif를 사용한다.