지난 포스트에서 수학에서의 집합 개념을 차용해온 집합형 자료형에 대해서 알아보는 시간을 가졌었다. 이번 포스트에서는 일반 프로그래밍에서 많이 사용되는 논리형 자료형에 대해서 알아보고자 한다.
논리형 자료형의 또 다른 이름으로 불형, 불리언형, 불 자료형이 있다. 그 이유는 수학이나 컴퓨터 공학에서 참과 거짓값을 갖는 것을 Boolean이라고 부르기 때문이다.
논리형 자료형은 딱 두 가지로 나뉜다. 참(True)값과 거짓(False)값. 파이썬에서는 대소문자를 명확하기 때문에 True 대신에 true 등으로 잘못 작성하게 되면 에러가 발생한다.
참값과 거짓값에 대한 연산 결과를 표 형태로 나타낸 것을 진리표라고 하는데, 이 진리표를 한 번 눈에 익혀주면 좋을 것 같아서 굳이 포스트에 표를 추가해 넣었다.
연산 | 진리값 |
True & True | True |
True & False | False |
False & True | False |
False & False | False |
True | True | True |
True | False | True |
False | True | True |
False | False | False |
이러한 불 자료형을 선언 및 할당할 때에는 아래의 코드와 같이 한다. 이때 True와 False의 대소문자에 유의하고, 문자형처럼 작은따옴표나 큰따옴표로 감싸지 않도록 한다.
fact = True
fake = False
논리형은 어디에 쓰일까?
프로그래밍을 하다 보면 특정상황이 맞는지 아닌지 판단해야 할때가 은근히 많은데 그럴때 유용하다. 이러한 논리형은 아래와 같은 코드로 손쉽게 찾아볼 수 있다.
10 > 5
100 > 300
만약 특정 두 값이 같은지 판단하려면 등호(=)를 두 번 연속해서 작성해주면 된다. 등호(=)를 한 번만 작성한 경우 파이썬 문법 포스트에서 배웠듯이, 할당 기호로써 작동되기 때문에 에러가 나거나 의도하지 않은 문법이 될 것이다.
100 == 200
142 == 142
논리형이 아닌데 논리형처럼 행동한다?
True가 참 값을 의미한다는 점과 False가 거짓 값을 의미한다는 점은 자명하다. 그런데 혹시 논리형이 아닌 숫자형이나 문자형 같은 자료형들도 참 값이나 거짓 값이라는 의미를 가질까? 결론부터 말하면 갖는다. 아래의 표를 참고하자.
자료형 | 할당된 값 | 참(True) or 거짓(False) |
문자형 | "무슨 문자열이 와도 상관없습니다." | True |
"" | False | |
숫자형 | 0을 제외한 나머지 모든 숫자 | True |
0 | False | |
리스트형 | ['Yes', 'or', 'Yes'] | True |
[] | False | |
튜플형 | ("one",) | True |
() | False | |
딕셔너리형 | {"name" : "ITisIK", "age" : 27} | True |
{} | False | |
집합형 | {1, 2, 3, 4} | True |
{} | False | |
None형 | None | False |
위 표에서의 핵심은, 숫자형은 0일때 나머지 자료형은 비어있을 때만 False이고, 나머지 경우에는 모두 True라는 점이다. 맨 마지막에 None형이란, 어떤 특정 값이 아예 없다는 의미를 위해 존재하는 형태로 완전한 무(無)를 의미합니다. 혹시 다른 프로그래밍 언어를 아는 분께서는 null과 동일한 것으로 생각해주시면 되겠습니다.(파이썬에서는 null이 없습니다.)
실제로 이러한 진리값이 맞는지 확인하기 위해서는 bool() 함수를 이용하면 된다.
bool1 = "무슨 문자열이 와도 상관없습니다."
bool(bool1)
# True
bool2 = ""
bool(bool2)
# False
bool3 = 941219
bool(bool3)
# True
bool4 = 0
bool(bool4)
# False
bool5 = ['Yes', 'or', 'Yes']
bool(bool5)
# True
bool6 = []
bool(bool6)
# False
bool7 = ("one",)
bool(bool7)
# True
bool8 = ()
bool(bool8)
# False
bool9 = {"name" : "ITisIK", "age" : 27}
bool(bool9)
# True
bool10 = {}
bool(bool10)
# False
bool11 = {1, 2, 3, 4}
bool(bool11)
# True
bool12 = {}
bool(bool12)
# False
bool13 = None
bool(bool13)
# False
오늘 포스트까지 파이썬 프로그래밍의 가장 기본이 되는 자료형에 대해 알아보았다. 다음 포스트에서는 제어문을 공부하기에 앞서 연산자에 대해서 짚고 넘어가려고 한다.
'▼2020년 > 파이썬 기초' 카테고리의 다른 글
[Python] 파이썬에서의 제어문 (if문) (1/3) (0) | 2020.01.22 |
---|---|
[Python] 파이썬에서의 연산, 연산자 (0) | 2020.01.22 |
[Python] 파이썬에서의 자료형, 딕셔너리형 (5/7) (0) | 2020.01.22 |
[Python] 파이썬에서의 자료형, 튜플형 (4/7) (0) | 2020.01.21 |
[Python] 파이썬에서의 자료형, 리스트형 (3/7) (0) | 2020.01.21 |