지금까지 정수, 실수와 문자열에 대해서 배웠습니다.
이러한 데이터 타입을 사용하면 간단한 수학/과학 계산을 하는 프로그램은 제법 많이 만들수 있습니다.
하지만 소프트웨어를 개발하기 위하여 Python을 시작한 우리에게 이정도로는 만족할 수준이 되지 않을 것 입니다.
이제 보다 고난이도의 소프트웨어를 개발하기 위한 첫걸음으로 두 개의 상태 만을 가지는 새로운 데이터 타입인 Boolean을 알아보도록 합니다.
소프트웨어 분야에서는 정수, 실수, 문자열외에도 다양한 데이터 타입이 존재합니다.
그 중 참(True
) 인지 거짓(False
)인지를 다루는 수학인 이산수학(discrete mathmatics)를 지원하기 위한 타입인 Boolean
입니다.
Boolean
타입은 앞서의 정수, 실수 및 문자열 처럼 값을 저장하고 계산하는데 활용하지만, True
혹은 False
를 저장한다는 점에서만 차이가 있습니다.
아래의 입력창에, 다음의 코드처럼, 변수 X와 Y를 만들고 각각 True
와 False
값을 주고, Boolean
타입 값을 확인해 봅니다.
X = True
Y = False
print(X, Y)
X = True
Y = False
print(X, Y)
True False
논리(logical)적인 관계를 나타내기 위한 수학의 한 분야로서, 대표적인 예제가 and
, or
, not
의 논리 연산(logical operation)입니다.
통상 참진리표(truth table)라고 불리우는 아래의 표를 통해서 각각의 기호의 의미를 이해할 수 있습니다.
X | Y | X and Y |
X or Y |
not X |
---|---|---|---|---|
True | True | True | True | False |
True | False | False | True | False |
False | True | False | True | True |
False | False | False | False | True |
and
논리 연산은 모든 값이 True
일때 True
를 가지며, or
논리 연산은 하나라도 True
인 값이 있으면 True
를 가집니다.
not
논리 연산은 주어진 값이 True
이면 False
로, 주어진 값이 False
이면 True
로 변환합니다.
Boolean 연산은 소프트웨어에서 조건적인 상황을 검사할때 주로 사용되며, 전자회로의 구성에서도 많이 활용되는 개념입니다.
아래의 입력창에, 다음의 코드처럼, 변수 X와 Y를 만들고 각각 True
와 False
값을 주고, 논리 연산자를 실행해 봅니다.
X = True
Y = False
print(X, Y)
print(X and Y, X or Y, not X)
X = True
Y = False
print(X, Y)
print(X and Y, X or Y, not X)
True False False True False
Boolean 타입의 결과는 비단 and
, or
, not
과 같은 연산자 외에도 다양한 곳에서 나타납니다.
즉, 수의 크거나 작음을 나타내는 > (Greater than)
, < (Less than)
, >= (Greater than or equal to)
, <= (Less than or equal to)
, == (Equal to)
, != (Not equal to)
등의 연산자도 True
혹은 False
를 결과값으로 만듭니다.
아래의 입력창에, 다음의 코드를 입력하고 실행하여, boolean 타입 값을 확인해 봅니다.
print(45 > 34)
print(45 < 34)
print(23.1 >= 23)
print(23.1 <= 23)
print(67.3 == 87)
print(67.3 != 87)
print(45 > 34)
print(45 < 34)
print(23.1 >= 23)
print(23.1 <= 23)
print(67.3 == 87)
print(67.3 != 87)
True False True False False True
Boolean 연산자들은 한줄에 복수의 연산자가 함께 사용 가능합니다.
예를 들면 (a < b) and (c != True)
와 같이 Boolean
타입의 값을 돌려주는 연산자들을 섞어서 혼합형태의 논리 연산도 가능합니다.
Boolean
타입의 개념인 True
혹은 False
는 정수/실수와 문자열과 같은 다른 데이터 타입에도 적용할 수 있습니다.
예를 들어, Python 언어는, 정수/실수가 0 혹은 0.0의 값을 가진다면 False
로 간주하며, 그외의 경우는 True
로 처리합니다.
문자열의 경우는 비어있는 문자열(''
혹은 ""
)은 False
로 간주하며, 그외의 경우는 True
로 처리합니다.
아래의 입력창에, 다음의 코드를 입력하고 실행하여, boolean 타입 값을 확인해 봅니다.
print(not 0)
print(not 0.0)
print(not 1)
print(not -34.2)
print(not '')
print(not "")
print(not "MrSuhyun")
print(not 0)
print(not 0.0)
print(not 1)
print(not -34.2)
print(not '')
print(not "")
print(not "MrSuhyun")
True True False False True True False
논리 연산자외의 크기를 비교하는 연산자도 문자열에 적용이 가능합니다.
이는 문자열이 사람의 눈에는 알파벳과 한글 등 글자로 보이지만, 사실 컴퓨터 내부에서는 숫자로 표현이 되기 때문입니다.
이렇게 사람에게 의미가 있는 글자를 컴퓨터가 실제 처리하기 위해서 숫자로 다루는 것을 코딩(Coding
) 혹은 인코딩(Encoding
)이라고 합니다.
대표적인 사례는 8비트로 영어와 기호를 나타내는 ASCII 코드이며, 자세한 내용은 https://ko.wikipedia.org/wiki/ASCII를 참조합니다.
따라서, 눈에 보이는 문자(들)도 사실상 컴퓨터 입장에서는 숫자이기에, 서로 비교하여 큰것 작은것을 도출할 수 있습니다.
아래의 입력창에, 다음의 코드를 입력하고 실행하여, 문자열 상호간의 비교시에 boolean 타입 값이 어떻게 나나타는지를 확인해 봅니다.
print('A' < 'a')
print('A' > 'Z')
print('abc' > 'def')
print('C++' < 'Python')
print('Javascript' > 'Python')
print('GO' < 'Python')
print('A' < 'a')
print('A' > 'Z')
print('abc' > 'def')
print('C++' < 'Python')
print('Javascript' > 'Python')
print('GO' < 'Python')
True False False True False True
다음의 논리 연산식들에 대한 결과값을 미리 예측하여 아래의 입력창에 주석문으로 적어봅시다.
a. True and not False
b. True and not True
c. True or True and False
d. not True or not False
e. True and not 0
f. 52 < 52.3
g. 1 + 52 < 52.3
h. 4 != 4.0
print(True and not False)
print(True and not True)
print(True or True and False)
print(not True or not False)
print(True and not 0)
print(52 < 52.3)
print(1 + 52 < 52.3)
print(4 != 4.0)
True False True True True True False False
Step_08_Module (0) | 2021.05.23 |
---|---|
Step_07_Conditional_Statement (0) | 2021.05.20 |
Step_05_String (0) | 2021.05.15 |
Step_04_Functions_Part_2 (0) | 2021.05.13 |
Step_03_Functions_Part_1 (0) | 2021.05.10 |
댓글 영역