Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 논리 연산자 완벽 가이드: and, or, not 활용법

조건문을 작성하다 보면 하나 이상의 비교를 동시에 수행해야 하는 경우가 자주 있습니다. 예를 들어 두 표현식이 모두 참(True)인지 확인하거나, 두 표현식 중 하나라도 거짓(False)인지 검사해야 할 수 있습니다.

바로 이럴 때 논리 연산자(logical operators)가 필요합니다. 논리 연산자는 하나의 조건문 안에서 여러 논리 비교를 수행할 수 있게 해주는 특수한 연산자입니다.

이 글에서는 연산자의 기본 개념부터 시작해, 파이썬에서 제공하는 세 가지 논리 연산자를 예제와 함께 차근차근 살펴보겠습니다.

파이썬 연산자의 종류

연산자(operator)는 파이썬에서 특정 연산을 수행하도록 지시하는 기호입니다. 예를 들어 빼기 기호(-)는 뺄셈 연산을 의미합니다.

파이썬에는 크게 세 가지 유형의 연산자가 있습니다.

  • 산술 연산자(arithmetic operators): 프로그램에서 덧셈, 뺄셈 등 수학적 연산을 수행합니다.
  • 비교 연산자(comparison operators): 두 값을 서로 비교하고 True 또는 False를 반환합니다.
  • 논리 연산자(logical operators): 여러 조건문을 결합하여 복합적인 조건을 만듭니다.

이 중 비교 연산자와 논리 연산자는 프로그래머가 프로그램의 흐름을 더 정교하게 제어할 수 있도록 도와줍니다. 예를 들어 비교 연산자로 특정 조건이 참인지 확인한 뒤, 그 결과에 따라 특정 코드 블록을 실행하거나 건너뛸 수 있습니다.

비교 연산자와 논리 연산자는 주로 if 문과 함께 사용됩니다. 온라인 쇼핑몰에서 사용자가 16세 이상인지 확인하고 싶다고 가정해 봅시다. 다음 코드로 구현할 수 있습니다.

age = 17

if age >= 16:
    print("사용자는 16세 이상입니다!")
else:
    print("사용자는 16세 미만입니다!")

실행 결과: 사용자는 16세 이상입니다!

이 프로그램에서는 비교 연산자를 사용해 사용자의 나이(여기서는 17)가 16보다 크거나 같은지 비교했습니다. 17은 16보다 크므로 이 조건식은 True로 평가되고, 콘솔에는 "사용자는 16세 이상입니다!"라는 메시지가 출력됩니다.

그렇다면 if 문 안에서 여러 비교를 동시에 수행하려면 어떻게 해야 할까요? 바로 이때 논리 연산자가 등장합니다.

파이썬 논리 연산자

파이썬은 값을 비교할 수 있는 세 가지 논리 연산자를 제공합니다.

논리 연산자는 표현식을 불리언(Boolean) 값으로 평가하며, 연산 결과에 따라 True 또는 False를 반환합니다. 파이썬의 세 가지 논리 연산자는 다음과 같습니다.

이름설명예시
and두 표현식이 모두 참일 때 Truea and b
or표현식 중 최소 하나가 참일 때 Truea or b
not표현식이 거짓일 때만 Truenot a

논리 연산자는 일반적으로 두 개 이상의 표현식이 원하는 방향으로 평가되는지 확인할 때 사용됩니다. 몇 가지 예제를 통해 각 논리 연산자가 실제로 어떻게 작동하는지 살펴보겠습니다. 앞서 소개한 온라인 쇼핑몰 예제를 계속 활용하겠습니다.

and 연산자

and 연산자는 지정된 모든 표현식이 True일 때만 True로 평가됩니다.

온라인 쇼핑몰을 운영한다고 가정해 봅시다. 사이트는 사용자가 16세 이상인지 확인해야 하고, 동시에 사용자의 계정 상태가 정상인지도 확인해야 합니다. 다음 코드로 구현할 수 있습니다.

age = 17
good_standing = True

if (age >= 16) and (good_standing == True):
    print("이 사용자의 계정으로 구매할 수 있습니다.")
else:
    print("이 사용자의 계정으로는 구매할 수 없습니다.")

실행 결과: 이 사용자의 계정으로 구매할 수 있습니다.

위 코드에서는 and 문을 사용해 사용자가 16세 이상인지, 그리고 계정 상태가 정상인지를 함께 평가했습니다. 먼저 age >= 16이 평가되고, 이어서 good_standing == True가 평가됩니다. 두 조건이 모두 True이므로 if 문의 내용이 실행됩니다.

두 조건 중 하나라도 False라면, 즉 사용자가 16세 미만이거나 계정 상태가 정상이 아니라면 else 문의 내용이 대신 실행됩니다.

or 연산자

or 연산자는 표현식 중 최소 하나라도 True이면 True로 평가됩니다.

예를 들어 멤버십 플랜에 가입한 모든 고객에게 5% 할인을 제공하고, 65세 이상 고객에게도 할인을 적용한다고 가정해 봅시다. 다음 프로그램으로 구현할 수 있습니다.

loyalty_plan = False
age = 67

if (loyalty_plan == True) or (age >= 65):
    discount = 5
else:
    discount = 0

print("구매자 할인율: ", discount)

실행 결과: 구매자 할인율: 5

이 코드는 loyalty_plan이 True인지, 그리고 age가 65 이상인지를 평가합니다. 이 경우 loyalty_plan은 True가 아니므로 첫 번째 조건은 False로 평가됩니다. 하지만 나이는 65보다 크므로 두 번째 조건은 True입니다.

or 문을 사용했고 조건 중 하나가 True로 평가되었기 때문에 if 문의 내용이 실행됩니다. 만약 사용자가 멤버십에 가입하지 않았고 65세 미만이라면 else 문이 실행되어 할인율이 0이 될 것입니다.

결국 이 사용자는 5% 할인을 받게 되며, "구매자 할인율:" 메시지와 함께 할인율이 콘솔에 출력됩니다.

not 연산자

not 연산자는 표현식이 False일 때만 True로 평가됩니다.

할인은 한 번만 사용할 수 있고, 아직 할인을 사용한 적이 없는 고객에게만 혜택을 제공하고 싶다고 가정해 봅시다. 다음 코드로 구현할 수 있습니다.

used_discount = True

if not(used_discount == True):
    print("이 사용자는 아직 할인을 사용하지 않았습니다.")
else:
    print("이 사용자는 이미 할인을 사용했습니다.")

실행 결과: 이 사용자는 이미 할인을 사용했습니다.

위 코드에서는 not 문을 사용해 used_discount == True라는 표현식이 False로 평가되는지 확인했습니다. 이 경우 해당 표현식은 True이므로 not 연산의 결과는 False가 되고, 그 결과 else 블록의 코드가 실행됩니다.

반대로 사용자가 아직 할인을 사용하지 않았다면 used_discount == True는 False로 평가되고, not 문은 True가 되어 if 문의 내용이 실행됩니다.

마무리

논리 연산자를 활용하면 프로그램의 흐름을 자유롭게 제어할 수 있습니다. 핵심을 정리하면 다음과 같습니다.

  • and: 두 표현식이 모두 True인지 확인합니다.
  • or: 여러 표현식 중 하나라도 True인지 확인합니다.
  • not: 표현식이 False인지 확인합니다.

이 글에서 소개한 예제들을 통해 논리 연산자의 동작 원리를 충분히 이해하셨기를 바랍니다. 이제 여러분의 파이썬 코드에서 전문가처럼 논리 연산자를 활용할 준비가 되었습니다!