3.1.5.6 논리형 (Boolean): 컴퓨터 판결의 절대자
학습목표
파이썬에서 참(True)과 거짓(False)만을 다루는 논리형 객체(bool)가 실제로는 컴퓨터 하드웨어의 $1$(ON)과 $0$(OFF) 스위치에서 기원했음을 이해합니다. 단순한 참/거짓을 넘어 숫자 데이터와 어떻게 호환되는지 핵심 원리를 학습합니다.
1. 세상에서 가장 단순한 데이터: 참과 거짓
컴퓨터 안의 수많은 복잡한 영상, 인공지능 알고리즘, 화려한 게임도 결국 그 밑바닥으로 내려가 보면 수백억 개의 초미세 전기 스위치들이 “전기가 통한다(ON)” 혹은 “전기가 끊겼다(OFF)” 두 가지 상태로만 움직이고 있습니다.
영국의 수학자 조지 불(George Boole)은 인간 논리의 참과 거짓을 이 두 가지 스위치 상태로 완벽히 수학적으로 치환할 수 있다는 ‘불 대수(Boolean Algebra)’를 창시했습니다. 이를 기리기 위해 프로그래밍 언어들은 참/거짓 데이터를 가리켜 불리언(Boolean, 파이썬에선 bool)이라고 부릅니다.
(웹툰 비유: 수많은 데이터들이 저울에 올라가고, 중앙 통제실의 거대한 재판관 로봇(CPU)이 가차 없이 초록색 합격(True)과 빨간색 불합격(False) 판정 도장을 쾅쾅 찍으며 갈림길(if문)을 제어하는 모습)
파이썬에서 bool 자료형은 단 두 개의 고유한 값만을 가집니다.
True(참): 수학적으로는 $1$, 물리적으로는 전기 ONFalse(거짓): 수학적으로는 $0$, 물리적으로는 전기 OFF
⚠️ 주의 (자바와의 차이점): Java 나 C 언어에서는 소문자로
true,false라고 적지만, 파이썬에서는 반드시 첫 글자를 대문자로 한True,False로 적으셔야 문법 에러가 나지 않습니다.
2. 조건문(if)의 문을 여닫는 스위치
이 단순한 Boolean 값은 프로그래밍의 핵인 제어문(if, while)의 문지기 역할을 전담합니다. 조건식을 평가하여 그 결과가 True일 때만 코드가 실행되도록 흐름을 완전히 지배합니다.
(다이어그램: 중앙의 거대한 제어 스위치에 $0$이 들어가면 빨간색 불합격 선이 켜지고 전류가 차단되며, $1$이 들어가면 초록색 스위치가 위로 올라붙어 전구(if문 실행)가 들어오는 전기 회로 애니메이션)
파이썬 활용 실습
파이썬 코드에서 조건식(비교 연산)을 던지면 컴퓨터는 반드시 bool 객체 조각을 뱉어냅니다.
# 1. 명시적인 논리형 변수 선언
is_raining = True
is_sunny = False
print(f"오늘은 비가 오나요? {is_raining} (타입: {type(is_raining)})")
# 2. 비교 연산이 만들어내는 논리 판결
math_score = 95
print("\n--- [ CPU 재판관의 판결 ] ---")
print("수학 90점 이상인가요?:", math_score >= 90) # 결과: True
print("수학 100점 만점인가요?:", math_score == 100) # 결과: False
예측 출력:
오늘은 비가 오나요? True (타입: <class 'bool'>)
--- [ CPU 재판관의 판결 ] ---
수학 90점 이상인가요?: True
수학 100점 만점인가요?: False
3. 놀라운 사실: True는 숫자 1 이다! (Subclass of Integer)
파이썬의 구조적 철학에서 아주 독특하고 재밌는 지점이 있습니다. 파이썬에서 논리형(bool)은 사실 정수형(int)의 새끼(서브 클래스)로 특별 대우를 받으며 하드 코딩되어 있습니다.
문자에 숫자가 매칭되었듯(ASCII), 파이썬은 내부적으로 True를 숫자 1로, False를 숫자 0으로 완벽히 취급하여 사칙연산 수학 계산까지 허용합니다. (빅데이터 분석 시, ‘합격자 수’를 셀 때 배열의 True 값들을 그냥 다 더해버리면 인원수가 나오는 엄청난 비법이 됩니다.)
# [바이브 코딩] 논리값과 숫자의 충격적인 덧셈 연산
print("True 더하기 True 는?", True + True) # 1 + 1 = 2
print("True 빼기 False 는?", True - False) # 1 - 0 = 1
print("False 곱하기 100 은?", False * 100) # 0 * 100 = 0
# 메모리 객체가 아예 같은지 샅샅이 뒤져보는 함수 issubclass()
print("\n파이썬 철학 검증: bool은 정말 int의 자식인가요?:", issubclass(bool, int))
예측 출력:
True 더하기 True 는? 2
True 빼기 False 는? 1
False 곱하기 100 은? 0
파이썬 철학 검증: bool은 정말 int의 자식인가요?: True
4. 코딩 영단어 학습 📝
Boolean(bool): 조지 불(George Boole)의 이름에서 따온 수학 용어입니다. 컴퓨터에서는 참/거짓만을 다루는 논리 체계를 뜻합니다. (영국 발음으로는 불리언에 가깝고, 파이썬 예약어로는bool로 단축해서 씁니다.)True/False: 진실(참)과 거짓입니다. (명제 논리학에서 파생된 절대적인 긍정과 부정을 의미합니다.)Subclass: 하위 클래스(자식 클래스). (부모의 유전자를 그대로 이어받은 종속된 종류라는 뜻입니다. 파이썬에서bool은 부모인int(정수)의 계산 기능을 모두 물려받았습니다.)