이번 글에서는 자료형이 참(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 반복문은 멈추게 된다.
'파이썬 > 기초 문법' 카테고리의 다른 글
[파이썬]조건문 if - 비교연산자, 논리연산자, in, not in (1) | 2022.10.05 |
---|---|
[파이썬]if 조건문의 구조(if, else, elif, pass) 및 활용하기 (0) | 2022.10.05 |
[파이썬]set 자료형 다루기 - 집합의 연산 및 관련 함수 (0) | 2022.10.04 |
[파이썬]set 자료형 만들기 및 집합의 특성 (0) | 2022.10.03 |
[파이썬]딕셔너리 함수들 - keys, values, items, clear, get, in (0) | 2022.10.03 |
댓글