본문 바로가기

Python

2-2. 비교/논리 연산자 활용 조건 판단

파이썬 비교/논리 연산자 활용 조건 판단 타이틀

안녕하세요! 지난 시간에는 프로그램의 흐름을 제어하는 가장 기본적인 방법인 if, elif, else 조건문에 대해 배웠습니다. 이제 "만약 ~라면, 그렇지 않으면"과 같은 판단을 내릴 수 있게 되었죠.

이번 시간에는 이 조건문들을 더욱 강력하게 만들어주는 **비교 연산자(Comparison Operators)**와 **논리 연산자(Logical Operators)**를 활용하여 어떻게 더 복잡하고 정교한 조건을 만들고 판단하는지에 대해 자세히 알아보겠습니다.

여러 개의 조건을 동시에 검사하거나, 특정 조건의 반대를 판단하는 방법을 익히면 여러분의 프로그램은 훨씬 더 똑똑해질 수 있습니다!


Part 1: if 문 안에서 비교 연산자 활용 복습

먼저 지난 시간에 배웠던 비교 연산자를 if 문 안에서 사용하는 것을 간단히 복습해봅시다. 비교 연산자는 두 값의 관계(같다, 다르다, 크다 등)를 평가하여 True 또는 False를 반환하며, 이 불린(Boolean) 값이 if 문의 조건으로 사용됩니다.

예시:

Python
 
# 파일 이름: comparison_in_if.py

user_age = 18

if user_age >= 19:
    print("성인입니다.")
else:
    print("미성년자입니다.")

product_price = 15000
budget = 20000

if product_price <= budget:
    print("상품을 구매할 수 있습니다.")
else:
    print("예산이 부족합니다.")

 
# 파일 이름: comparison_in_if.py

user_age = 18

if user_age >= 19:
    print("성인입니다.")
else:
    print("미성년자입니다.")

product_price = 15000
budget = 20000

if product_price <= budget:
    print("상품을 구매할 수 있습니다.")
else:
    print("예산이 부족합니다.")

[VS Code 터미널 출력]

파이썬 if문 내에서 비교 연산자 활용 예시

Part 2: if 문 안에서 논리 연산자 (and, or, not) 활용

논리 연산자는 여러 개의 비교 결과를 조합하여 더 복잡한 조건을 만드는 데 사용됩니다.

1. and 연산자 - "그리고", "모두 만족해야"

  • 여러 조건이 모두 참(True)일 때만 if 문 내부의 코드를 실행하고 싶을 때 and를 사용합니다.

예시: 운전 면허 발급 조건 (20세 이상이고, 시력도 좋아야 한다)

Python
 
# 파일 이름: logical_and_example.py

age = 22
has_good_eyesight = True

if age >= 20 and has_good_eyesight:
    print("운전 면허 발급이 가능합니다.")
else:
    print("운전 면허 발급 조건을 충족하지 못합니다.")

# 다른 경우: 나이는 충족하지만 시력이 안 좋은 경우
age2 = 25
has_good_eyesight2 = False

if age2 >= 20 and has_good_eyesight2:
    print(f"{age2}세, 시력 좋음: 운전 면허 발급 가능")
else:
    print(f"{age2}세, 시력 좋지 않음: 운전 면허 발급 불가")

 
# 파일 이름: logical_and_example.py

age = 22
has_good_eyesight = True

if age >= 20 and has_good_eyesight:
    print("운전 면허 발급이 가능합니다.")
else:
    print("운전 면허 발급 조건을 충족하지 못합니다.")

# 다른 경우: 나이는 충족하지만 시력이 안 좋은 경우
age2 = 25
has_good_eyesight2 = False

if age2 >= 20 and has_good_eyesight2:
    print(f"{age2}세, 시력 좋음: 운전 면허 발급 가능")
else:
    print(f"{age2}세, 시력 좋지 않음: 운전 면허 발급 불가")

[VS Code 터미널 출력]

파이썬 and 논리 연산자를 사용한 조건 판단 예시

 

2. or 연산자 - "또는", "하나라도 만족하면"

  • 여러 조건 중 하나라도 참(True)이면 if 문 내부의 코드를 실행하고 싶을 때 or를 사용합니다.

예시: 할인 대상 조건 (학생이거나, 65세 이상이거나)

Python
 
# 파일 이름: logical_or_example.py

is_student = False
age = 70

if is_student or age >= 65:
    print("할인 대상입니다.")
else:
    print("할인 대상이 아닙니다.")

# 다른 경우: 학생이 아닌 50세인 경우
is_student2 = False
age2 = 50

if is_student2 or age2 >= 65:
    print(f"학생({is_student2}), 나이({age2}): 할인 대상")
else:
    print(f"학생({is_student2}), 나이({age2}): 할인 대상 아님")

 
# 파일 이름: logical_or_example.py

is_student = False
age = 70

if is_student or age >= 65:
    print("할인 대상입니다.")
else:
    print("할인 대상이 아닙니다.")

# 다른 경우: 학생이 아닌 50세인 경우
is_student2 = False
age2 = 50

if is_student2 or age2 >= 65:
    print(f"학생({is_student2}), 나이({age2}): 할인 대상")
else:
    print(f"학생({is_student2}), 나이({age2}): 할인 대상 아님")

[VS Code 터미널 출력]

파이썬 or 논리 연산자를 사용한 조건 판단 예시

3. not 연산자 - "~이 아니다", "반대의 경우"

  • 조건의 논리 값을 반대로 뒤집고 싶을 때 not을 사용합니다. True는 False로, False는 True로 바꿉니다.

예시: 접속 불가 조건 (로그인되어 있지 않은 경우)

Python
 
# 파일 이름: logical_not_example.py

is_logged_in = False

if not is_logged_in:
    print("로그인해야 이용할 수 있는 서비스입니다.")
else:
    print("서비스를 이용할 수 있습니다.")

# 다른 경우: 로그인된 경우
is_logged_in2 = True

if not is_logged_in2:
    print(f"로그인 상태({is_logged_in2}): 서비스 이용 불가")
else:
    print(f"로그인 상태({is_logged_in2}): 서비스 이용 가능")

 
# 파일 이름: logical_not_example.py

is_logged_in = False

if not is_logged_in:
    print("로그인해야 이용할 수 있는 서비스입니다.")
else:
    print("서비스를 이용할 수 있습니다.")

# 다른 경우: 로그인된 경우
is_logged_in2 = True

if not is_logged_in2:
    print(f"로그인 상태({is_logged_in2}): 서비스 이용 불가")
else:
    print(f"로그인 상태({is_logged_in2}): 서비스 이용 가능")

[VS Code 터미널 출력]

파이썬 not 논리 연산자를 사용한 조건 판단 예시

Part 3: 복합 조건 만들기 (and, or, not 조합)

and, or, not 연산자를 함께 사용하여 더욱 복잡하고 정교한 조건을 만들 수 있습니다. 이때, 괄호 ()를 사용하여 연산의 순서와 의미를 명확히 하는 것이 매우 중요합니다. (연산자 우선순위 기억나시죠?)

예시: 영화 티켓 할인 조건

  • 조건 1: 10세 이하이거나 (어린이 할인)
  • 조건 2: 60세 이상이거나 (경로 우대 할인)
  • 조건 3: 19세 이상 60세 미만이고 (일반 성인), 학생증이 있는 경우 (학생 할인)

<!-- end list -->

Python
 
# 파일 이름: complex_conditional.py

age = 25
is_student = True
is_vip = False

# 영화 티켓 할인 조건 판단
# (10세 이하) 또는 (60세 이상) 또는 (19세 이상 AND 60세 미만 AND 학생)
if (age <= 10) or \
   (age >= 60) or \
   (19 <= age < 60 and is_student):
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상입니다!")
    if age <= 10:
        print("어린이 할인 적용.")
    elif age >= 60:
        print("경로 우대 할인 적용.")
    elif is_student: # 여기서는 이미 19세 이상 60세 미만이라는 조건이 통과된 상태
        print("학생 할인 적용.")
else:
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상이 아닙니다.")

print("\n--- 다른 경우 테스트 ---")
# 10세 이하
age = 8
is_student = False
if (age <= 10) or (age >= 60) or (19 <= age < 60 and is_student):
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상입니다!")

# 60세 이상
age = 62
is_student = False
if (age <= 10) or (age >= 60) or (19 <= age < 60 and is_student):
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상입니다!")

# 일반 성인 (학생 아님)
age = 30
is_student = False
if (age <= 10) or (age >= 60) or (19 <= age < 60 and is_student):
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상이 아닙니다.")
  • 19 <= age < 60: 파이썬에서는 이렇게 <나 >를 연달아 사용하여 범위를 간결하게 표현할 수 있습니다. 이는 19 <= age and age < 60과 동일합니다.
  • \ (역슬래시): 코드가 너무 길어질 때 다음 줄로 이어 작성하겠다는 의미입니다. 가독성을 위해 사용합니다.

 
# 파일 이름: complex_conditional.py

age = 25
is_student = True
is_vip = False

# 영화 티켓 할인 조건 판단
# (10세 이하) 또는 (60세 이상) 또는 (19세 이상 AND 60세 미만 AND 학생)
if (age <= 10) or \
   (age >= 60) or \
   (19 <= age < 60 and is_student):
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상입니다!")
    if age <= 10:
        print("어린이 할인 적용.")
    elif age >= 60:
        print("경로 우대 할인 적용.")
    elif is_student:
        print("학생 할인 적용.")
else:
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상이 아닙니다.")

print("\n--- 다른 경우 테스트 ---")
# 10세 이하
age = 8
is_student = False
if (age <= 10) or (age >= 60) or (19 <= age < 60 and is_student):
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상입니다!")

# 60세 이상
age = 62
is_student = False
if (age <= 10) or (age >= 60) or (19 <= age < 60 and is_student):
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상입니다!")

# 일반 성인 (학생 아님)
age = 30
is_student = False
if (age <= 10) or (age >= 60) or (19 <= age < 60 and is_student):
    print(f"나이: {age}세, 학생 여부: {is_student} - 할인 대상이 아닙니다.")

[VS Code 터미널 출력]

파이썬 논리 연산자를 조합하여 복잡한 조건 판단 예시

 


마무리하며

이번 시간에는 파이썬의 if, elif, else 조건문에 비교 연산자와 논리 연산자를 결합하여 더욱 정교하고 복잡한 조건을 판단하는 방법을 알아보았습니다. and, or, not을 적절히 사용하고, 괄호로 연산 순서를 명확히 하는 것이 프로그램의 논리를 정확하게 구현하는 데 매우 중요합니다.

이제 여러분의 파이썬 프로그램은 다양한 상황을 인지하고, 그에 맞는 반응을 보일 수 있는 능력을 갖추게 되었습니다!

다음 포스팅에서는 프로그램의 흐름 제어의 또 다른 핵심인 while 반복문에 대해 알아보겠습니다.


궁금한 점이 있다면 언제든지 질문해주세요! 다음 포스팅에서 만나요!

반응형