본문 바로가기
Language/Python

[고등학생부터, 파이썬] 06. 논리연산자와 중첩 if

by kellis 2026. 8. 5.
반응형
고등학생부터, 파이썬 · 6화

논리연산자와 중첩 if

여러 조건을 한꺼번에 검사하는 and, or, not 논리연산자와,

if 안에 또 다른 if를 넣는 중첩 if까지 

이 시리즈를 시작하며

요즘은 고등학교에서도 코딩을 정규 과목으로 가르치는 시대입니다. 전공자가 아니어도 바이브 코딩(Vibe Coding)이나 생성형 AI(Generative AI)를 활용하면 누구나 그럴듯한 코드 결과물을 만들어낼 수 있게 되었죠. 

개발 언어를 접하는, 전공자가 아닌 일반인 입문자가 많아진 것입니다.

이 시리즈는 글쓴이가 실제로 일반인, 고등학생 등 비전공자·입문자에게 파이썬을 가르치면서 정리한 내용들을 교재 형식으로 엮은 글입니다.최대한 쉽고 친절하게 설명하면서도, 컴퓨터와 프로그래밍 언어에 대한 기초 이론까지 함께 짚고 넘어가려 합니다.

 

고등학생, 비전공자, 완전 입문자도 따라올 수 있게끔 만든 시리즈이고, 실제 과외 수업 자료를 바탕으로 만들어서 학교 시험처럼 개념 확인 문제도 그대로 들어있어요.

중간중간 빈칸 채우기학교 시험 유형 문제가 나오는데, 정답은 바로 안 보이게 접어뒀습니다. 먼저 스스로 생각해본 다음 "보기"를 눌러서 확인해보세요.

Chapter 12
논리연산자 (Logical Operator)

지금까지는 조건을 한 개씩만 검사했어요. 하지만 현실에서는 여러 조건을 동시에 검사해야 하는 경우가 훨씬 많습니다.

예를 들어 놀이기구를 타려면 키 140cm 이상 그리고 나이 12세 이상을 둘 다 만족해야 하고, 시험을 보려면 학생증 또는 신분증 중 하나만 있으면 되죠. 이런 "그리고"와 "또는"을 코드로 표현하는 것이 바로 논리연산자입니다.

연산자 의미
and 그리고 (모든 조건을 만족해야 True)
or 또는 (하나만 만족해도 True)
not 아니다 (결과를 반대로 뒤집음)
그림으로 한눈에 보기
and, or, not 벤다이어그램
and · 모두 만족해야 True
python
age = 20
height = 170

if age >= 19 and height >= 160:
    print("탑승 가능합니다.")
실행 결과
탑승 가능합니다.

age가 15라면 15 >= 19는 False가 되고, False and True는 전체가 False이므로 아무것도 출력되지 않아요. and는 둘 다 True일 때만 True가 됩니다.

or · 하나만 만족해도 True
python
age = 70

if age <= 12 or age >= 65:
    print("무료 입장")
실행 결과
무료 입장
or 사용 시 자주 하는 실수

if num == 3 or 5: — 많은 사람들이 이렇게 써도 되는지 헷갈려 하시는데 이 코드는 의도한 대로 동작하지 않습니다. 조건은 각각 따로 비교해야 해요.

→ 올바른 표현: if num == 3 or num == 5:

not · 결과를 반대로
python
print(not True)
print(not False)
실행 결과
False
True
python
login = False

if not login:
    print("로그인이 필요합니다.")
else:
    print("서비스를 이용합니다.")
실행 결과
로그인이 필요합니다.

and와 or는 두 개까지만 연결할 수 있는 게 아니에요. 필요한 만큼 얼마든지 이어서 쓸 수 있습니다.

예제 · 조건 세 개 이어쓰기
python
age = 22
height = 175
weight = 60

if age >= 19 and height >= 160 and weight >= 50:
    print("모든 조건을 만족합니다.")
실행 결과
모든 조건을 만족합니다.
빈칸 채우기
  1. ① 모든 조건이 참이어야 참이 되는 연산자는 이다.
  2. ② 여러 조건 중 하나만 참이어도 참이 되는 연산자는 이다.
  3. ③ 참과 거짓을 반대로 뒤집는 연산자는 이다.
정답
① and  ② or  ③ not
학교 시험 유형
  1. 다음 프로그램이 실행되지 않는(아무것도 출력하지 않는) 이유를 서술하시오.
    python
    age = 18
    height = 170

    if age >= 19 and height >= 160:
        print("탑승")
  2. 다음 중 실행 결과가 True인 것을 모두 고르시오.

True and False

not False

False or False

True or False

정답
1. age(18)가 19 이상이라는 조건이 False이기 때문입니다. and는 두 조건이 모두 True여야 하는데, 앞쪽 조건이 이미 False이므로 height 값과 상관없이 전체 결과가 False가 되어 if 블록이 실행되지 않습니다.

2. ②, ④ — not False는 True, True or False는 하나만 True여도 되므로 True입니다.

 

Chapter 13
중첩 if (Nested if)

실제 프로그램에서는 첫 번째 조건이 맞을 때, 그 안에서 또 다른 조건을 검사해야 하는 경우가 많습니다. 이렇게 if문 안에 또 다른 if문이 들어가는 구조를 중첩 if(Nested if)라고 해요.

예를 들어 게임 로그인은 "아이디가 맞는가? → 맞으면 → 비밀번호가 맞는가?" 순서로 검사합니다. 아이디가 틀렸는데 비밀번호까지 검사할 필요는 없으니까요.

기본 문법
python
if 조건1:
    실행

    if 조건2:
        실행
들여쓰기 규칙

안쪽 if는 반드시 바깥쪽 if보다 한 단계 더 들여쓰기해야 합니다. 들여쓰기 깊이 자체가 "어느 if 안에 속해 있는지"를 나타내기 때문이에요.

예제 · 로그인 프로그램
python
id = input("아이디 : ")

if id == "admin":
    pw = input("비밀번호 : ")

    if pw == "1234":
        print("로그인 성공")
실행 결과 (id=admin, pw=1234)
아이디 : admin
비밀번호 : 1234
로그인 성공

아이디가 "admin"이 아니면 바깥쪽 조건부터 False가 되므로, 안쪽 if는 실행조차 되지 않고 비밀번호도 아예 입력받지 않습니다.

자주 하는 실수

들여쓰기를 빠뜨리거나, 첫 번째 if가 False인데도 안쪽 if가 항상 실행된다고 착각하는 경우가 많습니다. 첫 번째 조건이 False이면 안쪽 if는 아예 실행되지 않아요.

and로도 쓸 수 있지 않나요?

if password == "1234" and money <= 500000:처럼 논리연산자로도 조건을 검사할 수 있습니다. 하지만 이 방식은 password와 money 두 값이 이미 모두 준비되어 있어야 합니다.

반면 중첩 if는 첫 번째 조건이 맞아야만 다음 입력을 받으므로, 불필요한 입력을 받지 않아요. 그래서 실제 프로그램에서는 중첩 if 구조를 더 많이 사용합니다.

코드 읽기
  1. 다음 코드의 실행 결과를 작성하시오.
    python
    login = True
    admin = False

    if login:
        if admin:
            print("관리자")

    print("끝")
정답
끝 — login은 True라서 바깥쪽 if는 통과하지만, admin이 False라서 안쪽 if는 실행되지 않습니다. print("끝")은 들여쓰기가 되어있지 않아 if와 무관하게 항상 실행되므로 "끝"만 출력됩니다.
학교 시험 유형
  1. 중첩 if란 무엇인지 서술하시오.
  2. 다음 코드의 실행 결과를 작성하시오.
    python
    login = True
    member = True

    if login:
        if member:
            print("서비스 이용")
정답
1. if문 안에 또 다른 if문이 들어있는 구조입니다. 바깥쪽 조건이 참일 때만 안쪽 조건을 검사하며, 첫 번째 조건이 거짓이면 안쪽 if는 아예 실행되지 않습니다.

2. 서비스 이용 — login과 member가 모두 True이므로 바깥쪽, 안쪽 if가 순서대로 모두 통과합니다.

 

중첩 if는 마찬가지로 2개 이상의 중첩이 가능합니다. 갯수에 상관없이 중첩할 수 있지만, 중첩이 깊어지는 것이 꼭 좋은 것만은 아닙니다. 

 

다음 화 예고 — 이번 화로 조건문(if) 시리즈가 끝났어요. 7화부터는 같은 코드를 여러 번 반복해서 실행하는 반복문(while, for)으로 넘어갈게요.
반응형

댓글