본문 바로가기
파이썬/기초 문법

[파이썬]불 자료형 - bool 함수로 참과 거짓 판별하기

by 코키드 Cokid 2022. 10. 4.
반응형

이번 글에서는 자료형이 참(True)과 거짓(False)인지 나타내는 불(bool) 자료형을 다룬다.

자료형의 참과 거짓이라는 것의 의미와 bool 자료형의 활용에 대해 알아보자.

불(bool) 자료형 이해하기

불(bool) 자료형이란?

>>> a = True
>>> a   
True
>>> type(a)
<class 'bool'>

>>> b = false # false를 변수명으로 인식하여 에러 발생
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'false' is not defined

bool 자료형은 자료형의 참과 거짓을 판별한다. bool 자료형은 자료형이 참인 경우에 True, 거짓인 경우에 False를 반환하는데, True, False 두 가지의 값만 가질 수 있다. True와 False를 입력할 때는 첫 문자를 대문자로 해야 한다. 만일 소문자로 입력하면 이를 변수명으로 인식하여 에러를 출력한다.

그렇다면 자료형이 참과 거짓으로 나뉜다는 게 어떤 의미일까?

 

>>> 1 == 1
True

>>> 1 == 2 
False

>>> 1 < 2
True

>>> 3 < 2
False

자료형의 참과 거짓을 살펴보기 전에 직관적으로 이해할 수 있는 예문을 보자.

위 예문과 같이 논리식은 True과 False 둘 중 하나를 반환한다.

 

자료형의 참과 거짓 기준 - bool 연산자로 참, 거짓 판별하기

>>> a = 'String'
>>> bool(a) # 문자열 자료형이 비어있지 않으면 True
True

>>> a = ''
>>> bool(a) # 문자열 자료형이 비어있으면 False
False

>>> a = [1, 2, 3] # 리스트 자료형이 비어있지 않으면 True
>>> bool(a)
True

>>> a = [] # 리스트 자료형이 비어있으면 False
>>> bool(a)
False

>>> a = 1  # 숫자형이 0이 아니면 True
>>> bool(a)
True

>>> a = 0  # 숫자형이 0이면 False
>>> bool(a)
False

>>> a = None # None 값은 False
>>> bool(a)
False

백문이 불여일견이다. 코드를 통해 확인해보자. bool 함수를 사용하면 자료형이 참인지 거짓인지 확인할 수 있다.

문자열, 리스트, 튜플 등 sequence타입의 자료형은 값이 비어있으면 False를, 하나라도 값이 있으면 True를 반환한다.

숫자형의 경우 0이면 False 0이 아니면 True를 반환하며, None값은 항상 False를 반환한다.

bool 자료형은 조건문과 반복문에 주로 쓰이는데 프로그래밍을 배운다면 꼭 익숙해져야 한다.

 

조건문&반복문에서의 bool 자료형

>>> a = [1, 2, 3] 
>>> if a: # 리스트 a가 True이면 'True' 출력
...     print('True')
... else:  # 아닐 경우 'False' 출력
...     print('False')
... 
True

이전에 조건문을 다루지 않았지만, 이 정도 조건문은 직관적으로 이해할 수 있을 것이다. 곧 조건문에 대해 포스팅할 예정이니 눈으로 이해만 하자.

조건문 if는 다음 값이 참일 경우에만 작동하고 그렇지 않으면 else 구문이 작동한다.

a는 [1, 2, 3]의 값을 가진 리스트이다. 앞서 언급했듯이 리스트가 비어있지 않으면 True를 반환한다. 따라서 if문 뒤의 값이 참이기 때문에 True를 출력하는 것을 확인할 수 있다.

 

>>> a = ['a', 'b', 'c']
>>> 'b' in a # 'b'가 리스트 a에 있으면 True
True

>>> 'c' not in a # 'c'가 리스트 a에 없으면 True, 있으면 False
False

>>> if 'b' in a: # 'b'가 리스트 a에 있으면 조건문 실행
...     print('참')
...
참

in과 not in 함수를 사용해도 bool 자료형의 반환값이 나온다. in 함수에서는 값이 리스트의 요소값에 있다면 True, 없으면 False를 반환하는데 not in 함수에서는 반대로 작용한다. 튜플, 딕셔너리, 문자열 등의 자료형에서도 사용할 수 있다.

 

>> a = [1, 2, 3]
>>> while a: # while 뒤의 조건문이 True일 경우 반복문 시행
...     a.pop() # pop 함수로 리스트 a의 마지막 요소값 제거
...     print(a) # pop 함수로 마지막 요소값이 제거 된 리스트 a
...
3
[1, 2]
2
[1]
1
[]

이번엔 반복문 while문에서 불 자료형을 살펴보자. while 문은 조건문이 True일 경우에 계속 반복하여 코드를 실행한다.

리스트 a는 [1, 2, 3]의 값을 가지고 있기 때문에 True를 반환하고 while문이 시행된다.

리스트의 pop 함수는 괄호 안에 값을 입력하지 않으면 리스트의 마지막 요소값을 삭제한다.

pop 함수 실행 후 리스트 a는 [1, 2]가 되었고, 다시 while문은 a가 참인지 거짓인지 판별 후 반복문을 시행한다.

3이 제거되어 리스트는 [1, 2]가 되었지만 여전히 True를 반환하기에 반복문이 시행이 되다가 pop함수가 마지막 요소값을 제거하여 빈 리스트를 만들 때까지 반복문이 시행된다.

리스트 a가 빈 리스트 []가 되어 결국 False를 반환하고 while 반복문은 멈추게 된다.

 

 

반응형

댓글