핵심 자료형 in Python 3

타키탸키·2021년 1월 2일
0

Python 입문하기

목록 보기
3/14

Python의 핵심 자료형 마지막 편입니다. 이번 시간에는 Python의 특별한 자료형인 불린형에 대해 알아보고 추가적으로 type 함수도 함께 살펴 봅시다.

🦸‍♂️ 불 대수

불 대수란, 일상적인 논리를 수학적으로 표현한 것을 말합니다. 일반적인 수학의 값은 숫자입니다. 그런데 불 대수에서 사용하는 값은 숫자가 아닌 진리값입니다. 진리값은 어떤 명제가 참인지, 거짓인지를 나타내기에 불 대수의 값은 True와 False 두 개만 존재합니다.

일반 수학의 연산에는 덧셈, 뺄셈, 곱셈, 나눗셈이 있죠? 볼 대수의 연산에는 AND, OR, NOT이 있습니다.

불 대수를 제대로 이해하기 위해서는 명제가 무엇인지부터 알아야 합니다. 명제는 참 또는 거짓이 확실한 문장입니다. 예시를 한 번 볼까요?

해는 동쪽에서 뜬다. [참] 명제⭕
1 더하기 1은 3이다. [거짓] 명제⭕
강아지는 잠을 잡니까? [참/거짓 확실하지 않은 문장] 명제❌
벌꿀오소리는 귀엽다. [참/거짓 확실하지 않은 문장] 명제❌

명제는 참/거짓이 확실한 객관적인 평서문입니다. 따라서, 의문문이나 주관적인 문장은 명제가 될 수 없습니다.

명제를 활용해서 불 대수의 연산을 해볼까요? 먼저, AND 연산부터 봅시다.

AND 연산은 두 명제 x와 y가 모두 참일 때만 x AND y가 이 됩니다. 따라서 둘 중 하나만이라도 거짓이거나 둘 모두 거짓이면 거짓이 됩니다.

이번에는 문장으로 예를 들어 보겠습니다. '해는 동쪽에서 뜬다' AND '1 더하기 1은 3이다'는 참인 명제와 거짓인 명제의 AND 연산이므로 거짓입니다. 반면, '해는 동쪽에서 뜬다' AND '1 더하기 1은 2이다'는 두 명제 모두 참이므로 참이 됩니다.

OR 연산도 한 번 볼까요?

OR 연산은 두 명제 x와 y 중 하나라도 참이면 x OR y는 이 됩니다. 오직 두 명제 모두 거짓인 경우에만 거짓이 됩니다.

문장으로도 한 번 볼까요? '해는 동쪽에서 뜬다' OR '1 더하기 1은 3이다'는 뒷 문장이 거짓이긴 하지만 참인 명제가 하나라도 있기 때문에 참입니다. '해는 서쪽에서 뜬다' OR '1 더하기 1은 3이다'는 두 문장 모두가 거짓이기 때문에 거짓이 됩니다.

마지막으로 제일 간단한 NOT 연산을 보겠습니다. NOT 연산은 명제를 반대로 뒤집어 주는 역할을 합니다. 따라서, 참인 명제를 거짓으로 거짓인 명제를 참으로 뒤집기만 하면 되죠.

'해는 동쪽에서 뜬다'에 NOT 연산을 하면 '해는 동쪽에서 뜨지 않는다'가 됩니다. 또, '1 더하기 1은 3이다'에 NOT 연산을 하면 '1 더하기 1은 3이 아니다'가 됩니다.

🦸‍♂️ 불린형

불 대수를 Python에 적용해보겠습니다. Python에서는 참과 거짓을 표현하는 자료형불린(Boolean)이라고 합니다. 불린의 두 값은 대문자 T로 시작하는 True 대문자 F로 시작하는 False가 있습니다. 이들은 독립된 자료형으로 문자열 "True"와 "False"와는 다른 값임을 꼭 기억해주세요.

Python에서 불린 연산을 해봅시다. AND 연산을 하려면 두 값 사이에 소문자 and를 넣으면 됩니다.

print(True and True)
print(True and False)
print(False and True)
print(False and False)

위 코드를 실행하면 첫번째 코드만 True로 나오고 나머지는 False를 출력합니다.

OR 연산도 마찬가지입니다. 두 값 사이에 소문자 or를 넣어 연산하면 print(False or False)를 제외한 나머지는 모두 True를 출력합니다.

마지막으로 NOT 연산을 해봅시다.

print(not True)
print(not False)

위 코드를 실행하면 각각 False와 True가 나옵니다.

다음으로 실제 명제들을 활용해 볼까요? 우선 숫자 비교를 해봅시다.

print(5 > 4) > 결과: True
print(5 < 4) > 결과: False
print(6 >= 3) > 결과: True
print(6 <= 3) > 결과: False
print(1 == 1) > 결과: True
print(1 != 1) > 결과: False

편의상 연산의 결괏값을 코드 옆에 작성했습니다. 이때 알아두어야 할 것은 이상과 이하를 표현하는 부등호는 각각 '>='와 '<='이며, 등호는 '=='를, 그 반대는 '!='로 나타냅니다.

주의할 것은 '='와 '=='는 서로 다른 부호라는 점입니다. 전자값을 저장하는 역할을 하며 후자는 우리가 일반적으로 생각하는 등호의 역할을 합니다.

문자열의 경우도 마찬가지입니다.

print("Hello" == "Hello")
print("Hello" != "Hello")

두 "Hello"는 같은 값이기 때문에 위 코드는 True를, 아래 코드는 False를 출력합니다.

수와 문자열의 비교도 가능합니다.

print(3 > 2 and "Hello" == "Hello")

두 명제 모두 참이기 때문에 결과는 True가 나옵니다.

print(6 != 6 or (7 > 6 and 10 > 9))

위 코드를 한 번 볼까요? 우선 숫자 연산과 마찬가지로 괄호 안의 연산을 먼저 실행합니다.

먼저 7은 6보다 크기 때문에 True, 10은 9보다 크기 때문에 True. 두 값이 모두 True이므로 괄호 안의 결괏값은 True입니다. '6은 6이 아니다'는 거짓이기 때문에 False가 되고 괄호 밖과 괄호 안의 OR 연산 결과는 True가 하나라도 있기 때문에 True가 됩니다.

x = 4

print(x > 2 or not(x < 5 or x == 1))

마지막으로 이 연산을 봅시다. 우선, 괄호 안을 연산해 보면 x가 4고 5보다 작기 때문에 True를, x는 1이 아니기 때문에 False가 나옵니다. True가 하나라도 있기 때문에 괄호 안 연산은 True이지만 not에 의해 False가 됩니다.

다음으로 4는 2보다 크기 때문에 True가 나옵니다. 최종적으로 True와 Fasle를 or 연산하여 True가 출력됩니다.

🦸‍♂️ type 함수

Python으로 코딩을 하다보면 쓰고 있는 값이 어떤 자료형인지 불분명할 때가 있습니다. 이럴 때 사용할 수 있는 꿀팁이 있습니다. 바로 type 함수인데요. type 함수를 활용하면 값의 자료형을 확인할 수 있습니다. 예를 들어볼까요?

print(type(4))
print(type(4.0))
print(type("4"))

위 코드의 결괏값은 각각 <class 'int'>, <class 'float'>, <class 'str'>이 나옵니다. class 뒤에 등장하는 단어들이 각각 정수형, 소수형, 문자열의 약어인 것은 다 알고 있겠죠?

print(False)
print("False")

앞서 따옴표 속 True, False따옴표가 없는 True, False가 다르다는 것을 알려 드렸는데요. 위 코드의 결괏값을 보면 확실히 알 수 있습니다. 첫번째는 <class 'bool'>을, 두번째는 <class 'str'>을 출력하니까요. 참고로 bool은 Boolean의 약어입니다.

def hello():
    print("Hello world!")
    
print(type(hello))
print(type(print))

마지막으로 위 코드를 보겠습니다. 앞선 챕터에서 사용했던 hello함수를 정의하는 코드가 등장했네요. 위 코드의 결괏값은 각각 <class 'function'>과 <class 'builtin_function_or_method'>가 나옵니다.

function은 말 그대로 함수를 뜻합니다. 'builtin_function_or_method'는 마찬가지로 함수라는 뜻이지만 'built-in' 즉, 내장 함수를 말합니다. 우리가 직접 정의한 함수가 아닌 Python에 기본적으로 저장되어 있는 함수를 뜻하는 것이죠.


이번 챕터에서는 Python의 핵심적인 자료형들을 함께 배워봤습니다. 숫자형부터 불린형까지 참 다양한 자료형들이 있었죠? 이러한 기본적인 자료형을 알아야 후에 코딩을 할 때 오류 없이 코드를 작성할 수 있습니다. 이번 시간 수고 많으셨습니다!

* 이 자료는 CODEIT의 프로그래밍 기초 in Python 강의를 기반으로 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글