11.2 논리 연산자 사용하기

이번에는 논리 연산자를 사용해보겠습니다. 논리 연산자는 and, or, not이 있는데 먼저 and입니다.

  • a and b
>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> False and False
False
>>> 

and는 두 값이 모두 True라야 True입니다. 하나라도 False이면 False가 나옵니다.

이번에는 or입니다.

  • a or b
>>> True or True
True
>>> True or False
True
>>> False or True
True
>>> False or False
False

or는 두 값 중 하나라도 True이면 True입니다. 두 값이 모두 False라야 False가 되죠.

마지막으로 not입니다.

  • not x
>>> not True
False
>>> not False
True

not은 논릿값을 뒤집습니다. 그래서 not TrueFalse가 되고, not FalseTrue가 됩니다.

그럼 조금 응용해서 논리 연산자와 비교 연산자를 함께 사용해보겠습니다.

>>> 10 == 10 and 10 != 5    # True and True
True
>>> 10 > 5 or 10 < 3        # True or False
True
>>> not 10 > 5              # not True
False

비교 연산자로 비교한 결과를 논리 연산자로 다시 판단했습니다. 이때는 비교 연산자를 먼저 확인하고 논리 연산자를 확인하게 됩니다.

이처럼 파이썬은 영어 문장과 흡사한 구조를 가지고 있어서 코드가 읽기 쉬운 것이 장점입니다(우리는 크게 와 닿지 않지만 아무래도 영어가 모국어인 사람들에게는 큰 장점이겠죠?).

지금까지 비교 연산자와 논리 연산자에 대해 알아보았습니다. 이들 연산자는 if, while 등의 조건식을 만들 때 자주 사용하므로 의미를 정확히 익혀 두는 것이 좋습니다.

참고 | 정수, 실수, 문자열을 불로 만들기

정수, 실수, 문자열을 불로 만들 때는 bool을 사용하면 됩니다. 이때 정수 1은 True, 0은 False입니다. 만약 문자열의 내용이 'False'라도 불로 만들면 True입니다. 문자열의 내용 자체는 판단하지 않으며 값이 있으면 True입니다.

  • bool(값)

>>> bool(1)
True
>>> bool(0)
False
>>> bool(1.5)
True
>>> bool('False')
True
참고 | 단락 평가

논리 연산에서 중요한 부분이 단락 평가(short-circuit evalution)입니다. 단락 평가는 첫 번째 값만으로 결과가 확실할 때 두 번째 값은 확인(평가)하지 않는 방법을 말합니다. 즉, and 연산자는 두 값이 모두 참이라야 참이므로 첫 번째 값이 거짓이면 두 번째 값은 확인하지 않고 바로 거짓으로 결정합니다.

# 첫 번째 값이 거짓이므로 두 번째 값은 확인하지 않고 거짓으로 결정
print(False and True)     # False
print(False and False)    # False

or 연산자는 두 값 중 하나만 참이라도 참이므로 첫 번째 값이 참이면 두 번째 값은 확인하지 않고 바로 참으로 결정합니다.

# 첫 번째 값이 참이므로 두 번째 값은 확인하지 않고 참으로 결정
print(True or True)     # True
print(True or False)    # True