[포스코 신재생에너지 IoT 개발자 5기] Python 8편 — 조건문

Doohee·2025년 11월 25일
post-thumbnail

프로그램이 “상황에 따라 다르게 행동”하게 만드는 첫 번째 제어 구조가 바로 조건문(if)이다.

지금까지 배운 변수·자료형·연산자가 ‘데이터를 만드는 기초’였다면,

조건문은 그 데이터를 기반으로 프로그램의 흐름을 결정하는 로직의 시작점이다.

조건문을 이해하면 다음이 가능해진다:

  • 입력값에 따라 기능을 다르게 실행

  • 센서/장치 상태에 따라 제어 흐름 변경

  • 데이터 처리 과정에서 분기 처리

  • 복잡한 로직을 단계적으로 구조화

이후 배우게 될 반복문·예외처리·데이터 전처리까지 모두 조건문을 기반으로 확장되며, 이번 파트는 흐름 제어의 핵심 개념이다.

0. 왜 하필 "조건문" 이냐?

지금까지는

  • 변수 / 자료형

  • 연산자 / 입출력

  • 리스트·튜플·셋·딕셔너리

이렇게 "데이터를 만드는 법 / 다루는 법"을 배웠다면 조건문은 "프로그램의 흐름을 분기" 시키는 첫 제어문이다.

  • 입력값·환경·상태에 따라

  • 다른 코드가 실행되도록 만드는 구조

즉, "조건에 따라 여러 코드 블록 중 딱 하나만 실행을 선택하는 기능" 을 담당

1. 비교 연산자

두 값을 비교해서 참(True) / 거짓(False)을 돌려주는 연산자. 조건문 (if)안에서 거의 항상 같이 등장

조건문_1

⚠️ 헷갈리기 쉬운 포인트: = VS ==

  • =: 대입 연산자(값을 변수에 저장)

  • ==: 비교 연산자(값이 같은지 비교)

  • 실무에서도 if x = 10: 이렇게 쓰면 SyntaxError나기 때문에 "조건문 안에서는 = 한번이 아니라 == 두번" 이라고 숙지할 것!

2. 논리 연산자

1) 비교 연산자들이 만든 여러 조건을 조합하거나 부정할 때 사용

조건문_2

2) 단축 평가

파이썬은 조건을 왼쪽 ⇒ 오른쪽 순서로 평가하면서, 필요 없는 부분은 아예 평가하지 않고 "일찍" 끊는다.

  • A and B: A가 False면 결과가 무조건 False ⇒ B는 아예 보지 않음

  • A or B: A가 True면 결과가 무조건 True ⇒ B는 아예 보지 않음

  • 실무에서는 이 단축 평가를 이용해서 안전하게 검사

3. 조건문의 기본 개념

1) 조건문(Conditional Statement)

  • 주어진 조건의 참 / 거짓 여부에 따라 프로그램의 실행흐름을 분기시키는 제어문

2) 왜 필요한가?

  • 현실 세계의 "상황"을 코드로 표현하려면

    • 나이, 날씨, 잔액, 로그인 여부 등
  • 상황에 따라 다른 행동을 해야 함

  • 프로그램 로직을 여러 갈래로 분기시켜 더 유연하고 논리적인 흐름을 만들수가 있음

4. if 문 기본 문법

기본 구조

  • if: 조건문을 시작하는 키워드

조건문_3

  • 조건식: True 또는 False로 평가되는 표현식

조건문_4

  • :(콜론): "여기서부터 코드 블록 시작!" 이라는 신호

조건문_5

  • 들여쓰기 된 줄들: 조건이 참일 때 함께 실행되는 코드 블록

조건문_6

5. 들여쓰기와 콜론(:)

파이썬은 중괄호 {} 대신 "들여쓰기"로 코드 블록을 구분

대부분의 언어들(C, Java, JavaScript 등)은 코드 블록을 중괄호 {}로 감싸서 표현함

1) 콜론(:)의 역할

  • 조건문, 반복문, 함수 정의, 클래스 정의 등 "블록이 시작되는 구문" 뒤에는 항상 : 가 필요

  • 콜론이 빠지면 ⇒ SyntaxError: invalid syntax

조건문_7

2) 들여쓰기의 역할

  • 콜론 다음 줄 부터 같은 수준으로 들여쓴 줄들이 하나의 블록에 속함

조건문_8

3) 들여쓰기 규칙

  • 보통: 공백 4칸 또는 Tab 1칸

  • 한 블록 안에서는 무조건 일관성 있게사용

  • 블록 안에 넣을 코드가 아직 없을 때 ⇒ pass 사용

조건문_9

4) 들여쓰기 오류 예시

조건문_10

6. 조건식의 평가 - Truthy / Falsy

조건식은 결국 Boolean 값(True / False)로 평가

조건문_11

파이썬에서는 아래 값들을 거짓(Falsy)으로 취급

  • False

  • None

  • 숫자 0, 0.0

  • 빈 문자열 ""

  • 빈 리스트 []

  • 빈 튜플 ()

  • 빈 딕셔너리 {}

조건문_12

실무에서는 리스트가 비었는지 확인할 때

if len(items) == 0: 대신 if not items: 훨씬 많이 씀

실습1. 날씨에 따른 준비물 안내

1) 오늘의 날씨에 따라 필요한 준비물이 달라집니다.

2) 사용자에게 오늘의 날씨를 입력받고, 그에 따라 적절한 메시지를 출력하는 프로그램을 만들어 보세요.

3) 조건

  • 입력값은 "비" 또는 "맑음" 중 하나 입니다.

  • "비"라고 입력하면 "우산을 챙기세요!"를 출력하세요.

  • "맑음"이라고 입력하면 "선크림을 바르세요!"를 출력하세요.

조건문_13

✔ 출력 결과

: 우산을 챙기세요!

맑음: 선크림을 바르세요!

7. if-else 문

조건이 참일 경우에는 if문의 코드 블록을, 거짓일 경우에는 else문의 코드 블록을 실행

1) if - else문 기본 문법

  • else: 조건식이 False일 때 실행

조건문_14

조건문_15

2) if - else문 실행 흐름

조건문_16

3) if - else문 주의할 점

  • else에는 조건식을 쓸 수 없음

조건문_17

  • 들여쓰기가 잘못되면 블록 구분이 안 되어 오류 발생

조건문_18

실습2. 짝수 홀수 판별하기

정수를 입력 받아 짝수 / 홀수 여부를 판단하는 프로그램을 만들어봅시다.

  • "정수를 입력해 주세요" 라는 입력 설명문을 띄워주세요.

조건문_19

✔ 출력 결과

짝수: 짝수 입니다

홀수: 홀수 입니다.

8. if-elif-else 문

여러 조건을 순차적으로 검사해서 "처음으로 True가 되는 조건 하나만" 실행하는 구조

  • 그 이후의 조건은 검사하지 않음

  • 모든 조건이 거짓인 경우 else 블록이 있다면 그것이 실행됨

1) if - elif - else문 기본 문법

  • elif"else if"의 줄임말이며, 필요할 만큼 여러 개 나열할 수 있음

  • else는 생략 가능하며, 조건이 모두 거짓일 경우 처리할 필요가 있을 때 사용

조건문_20

조건문_21

2) if - elif - else문 실행 흐름

조건문_22

3) if - elif - else문 주의할 점

  • elif는 여러번 쓸 수 있지만, else는 한 번만 가능

  • 조건이 True인 블록 하나만 실행 ⇒ 이후 조건은 검사하지 않음

  • else는 조건 없이 반드시 마지막에 위치해야 함

  • elif 또는 else 없이 if만 사용할 수도 있음

4) if 여러번 vs if - elif 의 차이

  • if 여러 번 사용

    • 모든 조건을 각각 독립적으로 검사함

    • 여러 조건이 True이면 모두 실행됨

    • 조건 간에 서로 배타적이지 않거나 중복 가능성이 있을 때 사용

  • if - elif 사용

    • 위에서부터 순차적으로 검사함

    • 첫 번째로 True인 조건이 실행되면, 이후 조건은 검사하지 않고 건너뜀

    • 조건들이 서로 배타적(겹치지 않음)일 때 사용

실습3. 나이에 따른 영화 관람 가능 여부

영화관에서는 연령에 따라 관람할 수 있는 영화가 정해져 있습니다.

아래의 기준에 따라 사용자의 나이를 입력 받아 관람 가능한 등급을 출력하는 프로그램을 만들어보세요.

조건문_23

조건문_24

실습4. 시, 분, 초 구하기

조건문을 이용해서 초를 입력하면 시, 분, 초로 나누어 알려주는 프로그램을 만들어 봅시다.

  • 변수를 만들고 정수를 입력 받아 주세요.

  • 입력 받은 변수의 값을 사용해서 변수 hourminute, second에 알맞은 값을 저장해주세요.

  • 조건에 따라 시, 분, 초를 적절히 출력해주세요.

조건문_25

9. 중첩 조건문

하나의 if 또는 else 블록 내부에 또 다른 if문을 사용하는 구조

1) 중첩 조건문 기본 문법 구조

조건문_26

조건문_27

2) 중첩 조건문 주의할 점

  • 중첩이 깊어질수록 코드가 복잡해짐(가독성 저하) ⇒ and 연산자를 활용하여 단순화

  • 들여쓰기 오류 발생하기 쉬움 ⇒ 각 블록의 시작과 끝을 명확히 구분해야 함

실습5. 편의점 도시락 구매하기

당신은 편의점에 들러 간단한 식사를 사려고 합니다.

  • 아래의 가격표를 참고하여 금액을 입력하고, 원하는 식품을 선택하면 해당 식품을 구매할 수 있는지 판단하여 출력하는 프로그램을 만들어보세요.

    • 김밥 2,500원

    • 삼각김밥 1,500원

    • 도시락 4,000원

  • 프로그램 조건

    • 먼저 금액을 입력 받습니다.

    • 그다음, 식품명을 입력 받습니다. (입력값: "김밥", "삼각김밥", "도시락")

    • 입력한 금액이 선택한 식품의 가격 이상이면 구매에 성공한 메시지를 출력합니다.

    • 금액이 부족할 경우 "금액이 부족합니다."를 출력합니다.

조건문_28

10. 실무 적용 사례(Technical Use Cases)

1) ESS 충·방전 로직 (PV / 부하 / SOC 기반)

태양광 + 부하 + 배터리 잔량(SOC)의 상관관계를 조건문으로 제어한 가장 대표적인 에너지 실무 예제

조건문_29

✔ 부연설명

  • 이 로직 하나로 ESS 운영전략의 전체 흐름을 설명할 수 있다.

  • pv > load 조건은 “발전 잉여 여부”를 판단하는 기본 패턴.

  • soc 임계값은 ESS의 안전 운전 기준이다.

2) BEMS HVAC 제어 (온도·습도 + 점유 여부)

건물 에너지 운영에서 가장 핵심 제어 패턴. 조건문 하나로 냉방 / 제습 / 점유 기반 절전 까지 구현

조건문_30

✔ 부연설명

  • BEMS는 단순 온도 제어에서 끝나지 않고 점유 기반 제어(Occupancy-based Control)로 넘어가는 중이다.

  • 습도 조건(humidity > 60)은 실제로 불쾌지수, 곰팡이 위험 등을 고려한 매우 현실적인 기준.

  • not occupied 조건은 절전 모드(Energy Saving Mode)로 자동 전환되는 대표적 로직이다.

  • 쉽게 보이지만, HVAC 제어에서는 이 조건에 따라 실제 설비 에너지 사용량이 10~30% 절감된다.

3) 전력 피크 관리 (계약전력 기반 부하 제어)

기업에서 가장 많이 쓰이는 전력 절감 알고리즘. 조건문만으로 "피크 경보 → 차단 → 정상" 전환이 가능하다.

조건문_31

✔ 부연설명

  • 기업은 계약전력을 넘기면 피크 요금 폭탄이 나온다.

  • 그래서 95% 지점에서 미리 경보를 주고, 초과 시 비필수 설비 차단(Shedding)으로 제어한다.

  • 이 구조는 ESCO, 공장 EMS, 데이터센터 전력관리(DCP), 스마트팩토리 모두 공통적으로 적용한다.

  • 단순 조건문이지만 실제로는 수백만원~수억원 비용 절감에 직결되는 로직이다.

  • 자동화되면 조업 스케줄, 설비 우선순위, 부하분산까지 자동 제어할 수 있다.

11. [한눈에 보기] 조건문의 전체 구조 정리

1) 조건문 구성요소

  • if: 조건이 True일 때 실행

  • else: 조건이 False일 때 실행

  • elif: 여러 조건을 순차적으로 평가할 때 사용

  • 들여쓰기: 파이썬이 코드 블록을 구분하는 방식 (중괄호 대신 사용)

2) 조건문 기본 구조

조건문_32

3) 조건식(Condition) 구성 요소

  • 비교 연산자: ==, !=, >, <, >=, <=

  • 논리 연산자: and, or, not

  • Truthy / Falsy 평가 규칙: 0, False, None, 빈 컬렉션False로 간주

4) 조건문 결정 규칙

  • if: 첫 번째 조건 검사

  • elif: 이전 조건이 False일 때만 순차 검사

  • else: 어떤 조건도 맞지 않을 때 실행

  • 단 하나의 블록만 실행

12. [아웃트로] 조건문 챕터를 마치며..

8편 조건문은 앞으로 배울 모든 흐름 제어의 기반이 되는 파트다.

특히 들여쓰기, elif 사용 규칙, Truthy / Falsy 평가, 그리고 if / elif / else의 실행 순서만 정확히 잡으면

반복문·파일처리·예외처리·데이터분석까지 자연스럽게 연결된다.

다음 단계인 for / while 반복문은

조건문과 함께 프로그램의 논리 구조를 만드는 핵심이므로 이번 챕터를 충분히 이해하고 넘어가는 것이 좋다.

profile
에너지 기획 전문가로 성장하고자 합니다.

0개의 댓글