
프로그램이 “상황에 따라 다르게 행동”하게 만드는 첫 번째 제어 구조가 바로 조건문(if)이다.
지금까지 배운 변수·자료형·연산자가 ‘데이터를 만드는 기초’였다면,
조건문은 그 데이터를 기반으로 프로그램의 흐름을 결정하는 로직의 시작점이다.
조건문을 이해하면 다음이 가능해진다:
입력값에 따라 기능을 다르게 실행
센서/장치 상태에 따라 제어 흐름 변경
데이터 처리 과정에서 분기 처리
복잡한 로직을 단계적으로 구조화
이후 배우게 될 반복문·예외처리·데이터 전처리까지 모두 조건문을 기반으로 확장되며, 이번 파트는 흐름 제어의 핵심 개념이다.
0. 왜 하필 "조건문" 이냐?
지금까지는
변수 / 자료형
연산자 / 입출력
리스트·튜플·셋·딕셔너리
이렇게 "데이터를 만드는 법 / 다루는 법"을 배웠다면 조건문은 "프로그램의 흐름을 분기" 시키는 첫 제어문이다.
입력값·환경·상태에 따라
다른 코드가 실행되도록 만드는 구조
즉, "조건에 따라 여러 코드 블록 중 딱 하나만 실행을 선택하는 기능" 을 담당
1. 비교 연산자
두 값을 비교해서 참(True) / 거짓(False)을 돌려주는 연산자. 조건문 (if)안에서 거의 항상 같이 등장

⚠️ 헷갈리기 쉬운 포인트: = VS ==
=: 대입 연산자(값을 변수에 저장)
==: 비교 연산자(값이 같은지 비교)
실무에서도 if x = 10: 이렇게 쓰면 SyntaxError나기 때문에 "조건문 안에서는 = 한번이 아니라 == 두번" 이라고 숙지할 것!
2. 논리 연산자

파이썬은 조건을 왼쪽 ⇒ 오른쪽 순서로 평가하면서, 필요 없는 부분은 아예 평가하지 않고 "일찍" 끊는다.
A and B: A가 False면 결과가 무조건 False ⇒ B는 아예 보지 않음
A or B: A가 True면 결과가 무조건 True ⇒ B는 아예 보지 않음
실무에서는 이 단축 평가를 이용해서 안전하게 검사
3. 조건문의 기본 개념
현실 세계의 "상황"을 코드로 표현하려면
상황에 따라 다른 행동을 해야 함
프로그램 로직을 여러 갈래로 분기시켜 더 유연하고 논리적인 흐름을 만들수가 있음
4.
if문 기본 문법
if: 조건문을 시작하는 키워드
조건식: True 또는 False로 평가되는 표현식
:(콜론): "여기서부터 코드 블록 시작!" 이라는 신호

5. 들여쓰기와 콜론(
:)
파이썬은 중괄호 {} 대신 "들여쓰기"로 코드 블록을 구분
대부분의 언어들(C, Java, JavaScript 등)은 코드 블록을 중괄호 {}로 감싸서 표현함
:)의 역할조건문, 반복문, 함수 정의, 클래스 정의 등 "블록이 시작되는 구문" 뒤에는 항상 : 가 필요
콜론이 빠지면 ⇒ SyntaxError: invalid syntax


보통: 공백 4칸 또는 Tab 1칸
한 블록 안에서는 무조건 일관성 있게사용
블록 안에 넣을 코드가 아직 없을 때 ⇒ pass 사용


6. 조건식의 평가 - Truthy / Falsy
조건식은 결국 Boolean 값(True / False)로 평가

파이썬에서는 아래 값들을 거짓(Falsy)으로 취급
False
None
숫자 0, 0.0
빈 문자열 ""
빈 리스트 []
빈 튜플 ()
빈 딕셔너리 {}

실무에서는 리스트가 비었는지 확인할 때
if len(items) == 0: 대신 if not items: 훨씬 많이 씀
실습1. 날씨에 따른 준비물 안내
입력값은 "비" 또는 "맑음" 중 하나 입니다.
"비"라고 입력하면 "우산을 챙기세요!"를 출력하세요.
"맑음"이라고 입력하면 "선크림을 바르세요!"를 출력하세요.

비: 우산을 챙기세요!
맑음: 선크림을 바르세요!
7. if-else 문
if문의 코드 블록을, 거짓일 경우에는 else문의 코드 블록을 실행if - else문 기본 문법else: 조건식이 False일 때 실행

if - else문 실행 흐름
if - else문 주의할 점else에는 조건식을 쓸 수 없음

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

짝수: 짝수 입니다
홀수: 홀수 입니다.
8. if-elif-else 문
True가 되는 조건 하나만" 실행하는 구조그 이후의 조건은 검사하지 않음
모든 조건이 거짓인 경우 else 블록이 있다면 그것이 실행됨
if - elif - else문 기본 문법elif는 "else if"의 줄임말이며, 필요할 만큼 여러 개 나열할 수 있음
else는 생략 가능하며, 조건이 모두 거짓일 경우 처리할 필요가 있을 때 사용


if - elif - else문 실행 흐름
if - elif - else문 주의할 점elif는 여러번 쓸 수 있지만, else는 한 번만 가능
조건이 True인 블록 하나만 실행 ⇒ 이후 조건은 검사하지 않음
else는 조건 없이 반드시 마지막에 위치해야 함
elif 또는 else 없이 if만 사용할 수도 있음
if 여러번 vs if - elif 의 차이if 여러 번 사용
모든 조건을 각각 독립적으로 검사함
여러 조건이 True이면 모두 실행됨
조건 간에 서로 배타적이지 않거나 중복 가능성이 있을 때 사용
if - elif 사용
위에서부터 순차적으로 검사함
첫 번째로 True인 조건이 실행되면, 이후 조건은 검사하지 않고 건너뜀
조건들이 서로 배타적(겹치지 않음)일 때 사용
실습3. 나이에 따른 영화 관람 가능 여부


실습4. 시, 분, 초 구하기
변수를 만들고 정수를 입력 받아 주세요.
입력 받은 변수의 값을 사용해서 변수 hour와 minute, second에 알맞은 값을 저장해주세요.
조건에 따라 시, 분, 초를 적절히 출력해주세요.

9. 중첩 조건문
if 또는 else 블록 내부에 또 다른 if문을 사용하는 구조

중첩이 깊어질수록 코드가 복잡해짐(가독성 저하) ⇒ and 연산자를 활용하여 단순화
들여쓰기 오류 발생하기 쉬움 ⇒ 각 블록의 시작과 끝을 명확히 구분해야 함
실습5. 편의점 도시락 구매하기
아래의 가격표를 참고하여 금액을 입력하고, 원하는 식품을 선택하면 해당 식품을 구매할 수 있는지 판단하여 출력하는 프로그램을 만들어보세요.
김밥 2,500원
삼각김밥 1,500원
도시락 4,000원
프로그램 조건
먼저 금액을 입력 받습니다.
그다음, 식품명을 입력 받습니다. (입력값: "김밥", "삼각김밥", "도시락")
입력한 금액이 선택한 식품의 가격 이상이면 구매에 성공한 메시지를 출력합니다.
금액이 부족할 경우 "금액이 부족합니다."를 출력합니다.

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

이 로직 하나로 ESS 운영전략의 전체 흐름을 설명할 수 있다.
pv > load 조건은 “발전 잉여 여부”를 판단하는 기본 패턴.
soc 임계값은 ESS의 안전 운전 기준이다.
건물 에너지 운영에서 가장 핵심 제어 패턴. 조건문 하나로 냉방 / 제습 / 점유 기반 절전 까지 구현

BEMS는 단순 온도 제어에서 끝나지 않고 점유 기반 제어(Occupancy-based Control)로 넘어가는 중이다.
습도 조건(humidity > 60)은 실제로 불쾌지수, 곰팡이 위험 등을 고려한 매우 현실적인 기준.
not occupied 조건은 절전 모드(Energy Saving Mode)로 자동 전환되는 대표적 로직이다.
쉽게 보이지만, HVAC 제어에서는 이 조건에 따라 실제 설비 에너지 사용량이 10~30% 절감된다.
기업에서 가장 많이 쓰이는 전력 절감 알고리즘. 조건문만으로 "피크 경보 → 차단 → 정상" 전환이 가능하다.

기업은 계약전력을 넘기면 피크 요금 폭탄이 나온다.
그래서 95% 지점에서 미리 경보를 주고, 초과 시 비필수 설비 차단(Shedding)으로 제어한다.
이 구조는 ESCO, 공장 EMS, 데이터센터 전력관리(DCP), 스마트팩토리 모두 공통적으로 적용한다.
단순 조건문이지만 실제로는 수백만원~수억원 비용 절감에 직결되는 로직이다.
자동화되면 조업 스케줄, 설비 우선순위, 부하분산까지 자동 제어할 수 있다.
11. [한눈에 보기] 조건문의 전체 구조 정리
if: 조건이 True일 때 실행
else: 조건이 False일 때 실행
elif: 여러 조건을 순차적으로 평가할 때 사용
들여쓰기: 파이썬이 코드 블록을 구분하는 방식 (중괄호 대신 사용)

비교 연산자: ==, !=, >, <, >=, <=
논리 연산자: and, or, not
Truthy / Falsy 평가 규칙: 0, False, None, 빈 컬렉션은 False로 간주
if: 첫 번째 조건 검사
elif: 이전 조건이 False일 때만 순차 검사
else: 어떤 조건도 맞지 않을 때 실행
단 하나의 블록만 실행
12. [아웃트로] 조건문 챕터를 마치며..
8편 조건문은 앞으로 배울 모든 흐름 제어의 기반이 되는 파트다.
특히 들여쓰기, elif 사용 규칙, Truthy / Falsy 평가, 그리고 if / elif / else의 실행 순서만 정확히 잡으면
반복문·파일처리·예외처리·데이터분석까지 자연스럽게 연결된다.
다음 단계인 for / while 반복문은
조건문과 함께 프로그램의 논리 구조를 만드는 핵심이므로 이번 챕터를 충분히 이해하고 넘어가는 것이 좋다.