Python의 논리 연산자 and와 or는 문자열에도 적용할 수 있습니다. 이때 빈 문자열("")은 Boolean 값으로 False로 평가되며, 내용이 있는 문자열은 True로 평가됩니다. 두 연산자가 어떻게 동작하는지 먼저 살펴보겠습니다.
and 연산자
and 연산자는 표현식에서 거짓(falsey) 값이 하나라도 있으면 첫 번째 거짓 값을 반환하고, 모든 값이 참이라면 마지막 값을 반환합니다.
or 연산자
or 연산자는 표현식에서 참(truthy) 값이 하나라도 있으면 첫 번째 참 값을 반환하고, 모든 값이 거짓이라면 마지막 값을 반환합니다.
논리 연산자의 동작 규칙
| 연산 | 결과 |
|---|---|
| x and y | x가 거짓이면 x, 그렇지 않으면 y |
| x or y | x가 참이면 x, 그렇지 않으면 y |
| not x | x가 거짓이면 True, 그렇지 않으면 False |
아래는 Python에서 문자열에 논리 연산자를 사용하는 방법을 보여주는 예제 프로그램입니다.
str1 = ""
str2 = "python"
print(repr(str1 and str2))
print(repr(str2 and str1))
print(repr(str1 or str2))
print(repr(str2 or str1))
str1 = "Hello "
print(repr(str1 and str2))
print(repr(str2 and str1))
print(repr(str1 or str2))
print(repr(str2 or str1))
print(repr(not str1))
str2 = ""
print(repr(not str2))
str2 = "hello"
print("Hello == hello:", str1 == str2)실행 결과
'' '' 'python' 'python' 'python' 'Hello ' 'Hello ' 'python' False True Hello == hello: False
결과 해석
str1이 빈 문자열일 때 str1 and str2는 첫 번째 거짓 값인 빈 문자열 ''를 반환합니다. 반대로 str1 or str2는 첫 번째 참 값인 'python'을 반환합니다. 두 문자열이 모두 참 값을 가질 때는 and는 마지막 값을, or는 첫 번째 값을 반환하는 것을 확인할 수 있습니다. 또한 not 연산자는 빈 문자열에 대해 True, 내용이 있는 문자열에 대해 False를 반환하며, 대소문자가 다른 문자열 비교(Hello == hello)는 False임을 알 수 있습니다.