4.4 참과 거짓
컴퓨터가 무언가가 올바른지 틀린지를 판단하고 표현하려면 ‘참’과 ‘거짓’을 의미하는 데이터가 필요하다. 파이썬에서는 True
로 참을 나타내고, False
로 거짓을 나타낸다. 2장에서 등식과 부등식을 계산했을 때 보았던 것이다.
4.4.1 불리언
True
와 False
의 데이터 유형은 불리언(boolean, 줄여서 bool)이라고 부른다. 영국의 논리학자 조지 불(George Boole, 1815-1864)의 이름을 따 만든 용어다.
수 데이터나 문자열 데이터의 범위가 무한한 데 반해, 불리언 데이터는 참과 거짓 두 개 뿐이다. 파이썬 코드에 불리언 유형 데이터를 입력하려면 True
, False
를 입력하면 된다. true
, FALSE
등으로 대소문자를 잘못 입력하지 않도록 주의하자.
4.4.2 논리 연산
논리 연산을 이용하면 여러 개의 명제를 하나로 조합하거나, 명제를 반대로 부정할 수 있다. “해가 서쪽에서 뜬다”라는 명제와 “지구가 둥글다”라는 명제를 합쳐서 “해가 서쪽에서 뜨거나 지구가 둥글다.”와 같이 합할 수 있다. 또, “지구가 둥글다”라는 명제를 “지구가 둥글지 않다”와 같이 부정할 수도 있다.
파이썬으로 불리언 데이터에 논리 연산을 적용할 수 있다. 논리 연산에는 and
, or
, not
세 가지가 있다.
and 연산
and
연산은 ‘그리고’라는 뜻이다. 좌변과 우변의 값이 모두 참이어야만 참이고, 둘 중 하나라도 거짓이면 거짓으로 평가된다.
코드 4-29 and
연산의 예
>>> True and True # 좌변과 우변이 모두 참이어야 참
True
>>> True and False # 둘 중 하나라도 거짓이면 거짓
False
>>> True and True and True # 여러 번 연산할 수도 있다
True
>>> 1 + 1 == 2 and 3 < 4 # 여러 등식을 함께 평가할 때도 활용
True
or 연산
or
연산은 좌변과 우변의 값 중 하나라도 참이면 참이고, 둘 다 거짓일 때만 거짓으로 평가된다.
코드 4-30 or
연산의 예
>>> True or False # 좌변과 우변 중 하나라도 참이면 참
True
>>> False or False # 둘 다 거짓이면 거짓
False
>>> False or False or True # 여러 번 연산할 수도 있다
True
>>> False or True and True # and 와 or 를 연이어 연산해도 된다
True
and
연산과 or
연산은 계산되는 값이 좌우에 하나씩이고 각 값이 가질 수 있는 경우의 수는 참과 거짓 둘이므로, 계산결과가 각각 네가지 뿐이다. 이것을 정리해 둔 표를 진리표라고 부른다. 표 4-2에 두 연산의 진리표를 만들어 두었다.
좌변 | 우변 | and 연산결과 |
or 연산결과 |
---|---|---|---|
True |
True |
True |
True |
True |
False |
False |
True |
False |
True |
False |
True |
False |
False |
False |
False |
표 4-2 진리표
not 연산
마지막으로, not
연산은 참을 거짓으로, 거짓을 참으로 뒤집는 연산이다.
코드 4-31 not
연산의 예
>>> not True # 참의 반대는 거짓
False
>>> not False # 거짓의 반대는 참
True
>>> True and not False # 다른 불리언 연산과 조합할 수도 있다
True
4.4.3 참으로, 거짓으로 평가되는 값
프로그래밍에서 참과 거짓을 평가하는 일은 매우 자주 일어나는 일이고, 불리언 데이터가 아니더라도 다양한 데이터는 참과 거짓의 평가 대상이 될 수 있다. 그러므로 어떤 값이 참이고 어떤 값이 거짓인지 알아 두어야 한다.
다행히 규칙이 간단하다. 몇몇 예외를 제외하면 모든 데이터는 참으로 평가되기 때문에, 거짓으로 평가되는 값이 무엇인지만 알아두면 된다. 표 4-3을 확인하자.
값 | 데이터 유형 | 의미 |
---|---|---|
False |
불리언 | 거짓 |
None |
None 유형 | 값 없음 |
0 |
정수 | 0 |
0.0 |
실수 | 0 |
0j |
복소수 | 0 |
'' |
문자열 | 빈 문자열 |
() |
튜플 | 빈 튜플 |
[] |
리스트 | 빈 리스트 |
set() |
집합 | 빈 집합 |
{} |
사전 | 빈 사전 |
표 4-3 거짓으로 평가되는 값
아직 배우지 않은 데이터 유형도 있지만, ‘없다’, ‘0이다’, ‘비었다’라는 의미를 갖는 값들이 거짓으로 평가됨을 알 수 있다. 이 외의 다른 모든 값은 참으로 평가된다.
어떤 데이터가 참인지 거짓인지 기억이 나지 않는다면 대화식 셸에 bool(데이터)
라고 입력해서 검사해보면 된다.
코드 4-32 데이터의 참과 거짓 확인
>>> bool(0) # 정수 0은 없음을 의미하므로 거짓이다
False
>>> bool(1) # 0을 제외한 모든 정수는 참이다
True
>>> bool(None) # 없음을 의미하는 None은 거짓이다
False
연습문제
연습문제 4-7 불리언 연산 연습
다음 연산의 결과를 예상해 보고, 대화식 셸에 입력해 확인해 보아라.
not(True and True or False)
bool(10 < 20 and 0)
bool(False or 1)
댓글 남기기