▼2020년/파이썬 기초

[Python] 파이썬에서의 자료형, 논리형(Bool) (7/7)

ITISIK 2020. 1. 22. 10:09
반응형

  지난 포스트에서 수학에서의 집합 개념을 차용해온 집합형 자료형에 대해서 알아보는 시간을 가졌었다. 이번 포스트에서는 일반 프로그래밍에서 많이 사용되는 논리형 자료형에 대해서 알아보고자 한다.

 

  논리형 자료형의 또 다른 이름으로 불형, 불리언형, 불 자료형이 있다. 그 이유는 수학이나 컴퓨터 공학에서 참과 거짓값을 갖는 것을 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

  오늘 포스트까지 파이썬 프로그래밍의 가장 기본이 되는 자료형에 대해 알아보았다. 다음 포스트에서는 제어문을 공부하기에 앞서 연산자에 대해서 짚고 넘어가려고 한다.

반응형