본문 바로가기

프로그래밍/Python

파이썬 강좌 :: 06. 참과 거짓을 위한 자료형

부울(bool)형


안녕하세요 ! 이번 강좌에서는 참과 거짓을 표현하는 자료형 bool에 관해서 얘기해 볼 거에요.


프로그래밍을 하는데 참과 거짓이 왜 필요할까요? 그 이유는 프로그래밍에서는 결괏값으로 참과 거짓을 반환하는 연산들이 존재하기 때문이에요. 예를 들면 두 수를 비교하는 비교연산이 있어요.


5 > 3


위 연산식에서는 두 수의 대소를 비교하는 비교 연산이 수행되고 있어요. 5는 3보다 크니까 저 연산식은 결괏값으로 참을 반환할거에요. 그렇다면 파이썬에서 참과 거짓은 어떻게 표현할까요?


파이썬에서 참과 거짓은 예약어 True와 False로 표현하기로 되어있어요. 그리고 참과 거짓은 데이터이기 때문에 다음처럼 변수에 대입할 수 있어요.


>>> x = True

>>> x

True

>>> type(x)

<class 'bool'>


변수 x에 True라는 값을 대입했기 때문에 변수 x의 자료형은 bool형이 된 것을 확인할 수 있어요. 


자 ! 그럼 본격적으로, 자료형 bool을 결괏값으로 갖는 연산에 대해 알아보도록 할까요?


목차

1. 비교 연산

2. 논리 연산

3. 참과 거짓




비교 연산


비교연산이란 두 데이터의 대소관계를 비교하는 연산이에요. 예를 들어 3이 5보다 큰지, 10이 4보다 작은지 확인하고 싶다면 여러분은 비교 연산을 해야되요. 그렇다면 비교 연산은 어떻게 할까요?


비교연산을 하려면 비교 연산자를 사용해야 되요. 비교 연산자로는 '>', '<', '>=', '<=', '==', '!=' 총 6개가 있어요. 연산자를 어떻게 사용하는지 하나하나 알아보도록 해요.



첫번째로는 대소 비교연산자에요. 기호는 > < >= <= 를 사용해요. 어떻게 사용하는 지 대충 짐작이 가시죠?


예를 들어 변수 x의 값이 변수 y의 값보다 큰지 확인하려면 다음과 같은 비교연산식을 작성해야되요.


>>> x = 10

>>> y = 5

>>> x > y

True


어때요? 수학이랑 비슷해서 쉽죠? 다만 연산의 결과값이 참과 거짓일 뿐이에요.



두번째로는 동등 비교연산자에요. 기호는 == != 를 사용해요. 프로그래밍에서 기호 '='는 같다의 의미가 아니라 대입한다의 의미로 사용된다고 했었죠? 그럼 같다를 나타내는 기호는 무엇일까요? 바로 '==' 에요.


변수 x의 값이 변수 y의 값과 같은지 확인하려면 다음과 같은 코드를 작성해야되요.


>>> x = 10

>>> y = 10

>>> x == y

True


만약 서로의 값이 다른지 확인하려면 ? 기호 != 를 사용하면 되요.


>>> x = 5

>>> y = 7

>>> x != y

True




논리연산


우리는 지금까지 두 수를 비교하는 연산에 대해서 살펴보았어요. 지금부터 배울 논리 연산은 비교 연산과는 다르게 참과 거짓을 논리적으로 연산한답니다. 참과 거짓을 논리적으로 연산한다는게 무슨 소리일까요?


예를 들어 여러분이 자동차를 운전한다고 생각해보세요. 자동차를 운전하기 위해선 무엇을 해야할까요? 첫번째로 시동이 걸려있어야 하겠죠? 그리고 악셀을 밟아야 할거에요. 시동이 걸려있지도 않은데 악셀을 밟는다면 자동차는 움직이지 않을거에요. 당연한 얘기죠?


자 위 상황을 프로그래밍 관점에서 코드형태로 작성해볼께요. 코드에는 bool형 변수 3가지 <자동차가 움직이는가?>, <시동이 걸렸는가?>, <악셀이 밟혔는가?> 가 등장해요.


<자동차가 움직이는가?> = <시동이 걸렸는가?> 그리고 <악셀이 밟혔는가?>


<자동차가 움직이는가?> 변수가 참이 되려면 <시동이 걸렸는가?> 변수와 <악셀이 밟혔는가?> 변수가 모두 참이어야 겠죠? 여기서 모두 참일 경우를 찾아내는 게 바로 논리 연산이에요.


논리 연산은 논리 연산자 and, or, not을 통해 수행할 수 있어요. 연산자 and는 위에서 설명한 '그리고'의 역할을 해주고 연산자 or은 '혹은'의 역할을 해줘요. 연산자 not은 조금 특이한 연산자라 나중에 설명하도록 할게요.


and 연산자는 두 bool형이 모두 참일 때만 참을 반환해요. 만약 한쪽이라도 거짓일 경우 거짓을 반환합니다.


>>> True and True

True

>>> True and False

False


or 연산자는 두 bool형이 적어도 하나가 참일 때 참을 반환해요. 만약 두쪽 다 거짓일 경우에만 거짓을 반환합니다.


>>> True or False

True

>>> False or False

False


자 이제 not 연산자에요. not 연산자는 and, or 연산자와 다르게 하나의 bool형을 요구해요. 만약 그 bool형이 참일 경우 거짓을 반환하고, 반대로 거짓일 경우 참을 반환해요.


>>> not True

False

>>> not False

True


여기까지 논리연산의 사용법과 의미에 대해 알아보았어요. 그렇다면 논리연산은 어떨 때 사용할까요? 논리연산은 여러 연산 식을 논리적으로 묶어서 하나의 식으로 표현할 때 사용된답니다. 예를 들어 변수 x가 5보다 크고 10보다 작은지 확인하는 식을 작성하기 위해선 다음과 같이 논리연산을 사용해야 해요.


>>> x = 7

>>> 5 < x and x < 10

True

>>>


이 외에도 여러 조건을 검사해야 할 때, 논리연산자로 묶으면 보다 깔끔하게 코드를 작성할 수 있어요.


>>> active = True

>>> ready = True

>>> start = False

>>> active and ready and not start

True

>>>



참과 거짓


파이썬에서 참과 거짓은 True와 False이지만 프로그래밍 관점에서 바라볼 때, 참과 거짓도 결국엔 숫자 데이터에 불과해요. 쉽게 말하자면 True와 False도 값이 있다는 얘기죠.


파이썬에서 False는 수로 0을 의미해요. 반대로 True는 0이 아닌 모든 수를 의미하겠죠? 정말 그러한지 확인하는 간단한 방법은 아래처럼 논리연산을 수행해보는 것이에요.



>>> 1 and True

True

>>>


정말로 and연산에서 1은 True로 인식되는 것을 확인할 수 있어요. 그렇다면 0은 어떨까요?


>>> 0 and True

0

>>>


0과 True를 and연산하면 0이 반환되요. 아까도 얘기했지만 0은 파이썬에서 False를 의미하기 때문에 저 결과는 맞는 결과에요..




잘 따라오셨나요? 자료형 bool에 대해 이해가 잘되셨으면 좋겠네요. 참과 거짓은 프로그래밍을 하면서 많이 접하게 되므로 반드시 익숙해져야 해요.


그럼 ! 다음 강좌에서 뵈요~ 안녕 !



확인문제