본문 바로가기
Python/Python

파이썬 프로그래밍의 기초 - 자료형 (7)불 자료형 (bool)

by 키모형 2022. 12. 14.

불 자료형이란?

불(bool) 자료형이란 참(True)과 거짓(False)을 나타내는 자료형이다. 불 자료형은 다음 2가지 값만을 가질 수 있다.

  • True - 참
  • False - 거짓

True나 False는 파이썬의 예약어로 true, false와 같이 사용하지 말고 첫 문자를 항상 대문자로 사용해야 한다.

다음과 같이 변수 a에는 True를, 변수 b에는 False를 지정해 보자.

>>> a = True
>>> b = False

따옴표로 감싸지 않은 문자열을 변수에 지정해서 오류가 발생할 것 같지만 잘 실행된다. type 함수를 변수 a와 b에 사용하면 두 변수의 자료형이 bool로 지정된 것을 확인할 수 있다.

>>> type(a)
<class 'bool'>
>>> type(b)
<class 'bool'>

type(x)는 x의 자료형을 확인하는 파이썬의 내장 함수이다.

불 자료형은 조건문의 리턴 값으로도 사용된다. 조건문에 대해서는 if문에서 자세히 배우겠지만 잠시 살펴보고 넘어가자.

>>> 1 == 1
True

1 == 1 은 "1과 1이 같은가?"를 묻는 조건문이다. 이런 조건문은 결과로 True 또는 False에 해당되는 불 자료형을 리턴한다. 1과 1은 같으므로 True를 리턴한다.

>>> 2 > 1
True

2는 1보다 크기 때문에 2 > 1 조건문은 True를 리턴한다.

>>> 2 < 1
False

2는 1보다 작지 않기 때문에 2 < 1 조건문은 False를 리턴한다.

자료형의 참과 거짓

자료형에 참과 거짓이 있다? 조금 이상하게 들리겠지만 참과 거짓은 분명히 있다. 이는 매우 중요한 특징이며 실제로도 자주 쓰인다.

자료형의 참과 거짓을 구분하는 기준은 다음과 같다.

값참 or 거짓

"python"
"" 거짓
[1, 2, 3]
[] 거짓
(1, 2, 3)
() 거짓
{'a': 1}
{} 거짓
1
0 거짓
None 거짓

문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있으면(" ", [ ], ( ), { }) 거짓이 된다. 당연히 비어있지 않으면 참이 된다. 숫자에서는 그 값이 0일 때 거짓이 된다. 위 표를 보면 None이 있는데, 이것에 대해서는 뒷부분에서 배우니 아직은 신경 쓰지 말자. 그저 None은 거짓을 뜻한다는 것만 알아두자.

다음 예를 보고 자료형의 참과 거짓이 프로그램에서 어떻게 쓰이는지 간단히 알아보자.

>>> a = [1, 2, 3, 4]
>>> while a:
...     print(a.pop())
...
4
3
2
1

먼저 a = [1, 2, 3, 4] 라는 리스트를 만들었다.

while문은 03장에서 자세히 다루겠지만 간단히 알아보면 다음과 같다. 조건문이 참인 동안 조건문 안에 있는 문장을 반복해서 수행한다.

while 조건문:
    수행할 문장

즉 위 예를 보면 a가 참인 경우에 a.pop()을 계속 실행하여 출력하라는 의미이다. a.pop() 함수는 리스트 a의 마지막 요소를 끄집어내는 함수이므로 리스트 안에 요소가 존재하는 한(a가 참인 동안) 마지막 요소를 계속해서 끄집어낼 것이다. 결국 더 이상 끄집어낼 것이 없으면 a가 빈 리스트([])가 되어 거짓이 된다. 따라서 while문에서 조건문이 거짓이 되므로 while문을 빠져나가게 된다. 위에서 본 예는 파이썬 프로그래밍에서 매우 자주 사용하는 기법 중 하나이다.

위 예가 너무 복잡하다고 생각하는 독자는 다음 예를 보면 쉽게 이해될 것이다.

>>> if []:
...     print("참")
... else:
...     print("거짓")
...
거짓

if문에 대해서 잘 모르는 독자라도 위의 문장을 해석하는 데는 무리가 없을 것이다.

if문에 대해서는 03장에서 자세히 다룬다.

[]는 앞의 표에서 볼 수 있듯이 비어 있는 리스트이므로 거짓이다. 따라서 "거짓"이란 문자열이 출력된다. if문에 대해서 잘 모르는 독자라도 위 문장을 해석하는 데는 무리가 없을 것이다.

>>> if [1, 2, 3]:
...     print("참")
... else:
...     print("거짓")
... 
참

위 코드를 해석해 보면 다음과 같다.

만약 [1, 2, 3]이 참이면 "참"이라는 문자열을 출력하고 그렇지 않으면 "거짓"이라는 문자열을 출력하라.

위 코드의 [1, 2, 3]은 요솟값이 있는 리스트이기 때문에 참이다. 따라서 "참"을 출력한다.

불 연산

자료형에 참과 거짓이 있음을 이제 알게 되었다. bool 함수를 사용하면 자료형의 참과 거짓을 보다 정확하게 식별할 수 있다.

다음 예제를 따라 해 보자.

>>> bool('python')
True

'python' 문자열은 빈 문자열이 아니므로 bool 연산의 결과로 불 자료형인 True를 리턴한다.

>>> bool('')
False

'' 문자열은 빈 문자열이므로 bool 연산의 결과로 불 자료형인 False를 리턴한다.

위에서 알아본 몇 가지 예제를 더 수행해 보자.

>>> bool([1,2,3])
True
>>> bool([])
False
>>> bool(0)
False
>>> bool(3)
True

위에서 알아본 것과 동일한 참과 거짓에 대한 결과를 리턴하는 것을 확인할 수 있다.

지금까지 파이썬의 가장 기본이 되는 자료형인 숫자, 문자열, 리스트, 튜플, 딕셔너리, 집합, 불에 대해서 알아보았다. 여기까지 잘 따라온 독자라면 파이썬에 대해서 대략 50% 정도 습득했다고 보아도 된다. 그만큼 자료형은 중요하고 프로그램의 근간이 되기 때문에 확실하게 해놓지 않으면 좋은 프로그램을 만들 수 없다. 책에 있는 예제만 따라 하지 말고 직접 여러 가지 예들을 테스트해 보며 02-1~02-7의 자료형에 익숙해지기를 바란다.

반응형