점프 투 파이썬 DAY8(if문)

정지범·2026년 9월 17일

점프 투 파이썬

목록 보기
10/37

! 지금까지는 파이썬의 여러 자료형에 대해서 알아보았다.

  • 이번 장부터는 프로그램의 흐름을 제어하는 제어문에 대해서 알아보자.
  • 프로그램은 항상 위에서 아래로 모든 코드를 똑같이 실행하는 것이 아니다.
  • 상황에 따라 어떤 코드는 실행하고, 어떤 코드는 실행하지 않아야 할 때가 있다.
  • 이처럼 조건에 따라 프로그램의 실행 흐름을 결정할 때 사용하는 것이 if문이다.

1. if문은 왜 필요할까?

다음과 같은 상황을 생각해 보자.

비가 오면 우산을 가져간다.
비가 오지 않으면 우산을 가져가지 않는다.
  • 여기에는 하나의 조건이 존재한다.
비가 오는가?
  • 조건이 참이면
우산을 가져간다.
  • 조건이 거짓이면
우산을 가져가지 않는다.

파이썬에서는 이러한 상황을 if문으로 표현할 수 있다.

rain = True

if rain:
    print("우산을 가져간다.")
else:
    print("우산을 가져가지 않는다.")

실행 결과

우산을 가져간다.

풀이

현재 rain 변수에는 True가 저장되어 있다.

rain = True

따라서

if rain:

의 조건은 참이 된다.

rain → True

↓

if 블록 실행

그래서

print("우산을 가져간다.")

가 실행된다.


반대로 rain이 False라면 어떻게 될까?

rain = False

if rain:
    print("우산을 가져간다.")
else:
    print("우산을 가져가지 않는다.")

실행 결과

우산을 가져가지 않는다.

즉, if문은 조건이 참인지 거짓인지 판단해서 실행할 코드를 선택한다.




2. if문의 기본 구조

if와 else를 사용하는 가장 기본적인 형태는 다음과 같다.

if 조건:
    조건이 참일 때 실행할 문장
else:
    조건이 거짓일 때 실행할 문장

조금 더 자세히 표현하면 다음과 같다.

if 조건:
    실행문1
    실행문2
    실행문3
else:
    실행문4
    실행문5
  • 조건이 True이면 if 아래의 코드가 실행된다.
  • 조건이 False이면 else 아래의 코드가 실행된다.

2-1. if와 else의 실행 흐름

          조건
           │
      ┌────┴────┐
     True      False
      │          │
      ▼          ▼
  if 영역     else 영역

예를 들어

age = 20

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

실행 결과

성인입니다.

조건을 확인해 보면

age >= 18

은

20 >= 18

↓

True

이므로 if 영역이 실행된다.


2-2. else는 반드시 필요한가?

else는 반드시 사용할 필요는 없다.

age = 20

if age >= 18:
    print("성인입니다.")

실행 결과

성인입니다.
  • 조건이 참일 때만 특정 작업을 수행하고 싶다면 else를 생략할 수 있다.

하지만 else만 단독으로 사용할 수는 없다.

else:
    print("실행")

위와 같은 코드는 사용할 수 없다.

if → 단독 사용 가능

else → if와 함께 사용



3. 들여쓰기

파이썬에서 if문을 사용할 때 매우 중요한 것이 들여쓰기(indentation)이다.

다음 코드를 보자.

age = 20

if age >= 18:
    print("성인입니다.")
    print("입장 가능합니다.")
  • 두 개의 print()가 같은 깊이로 들여쓰기되어 있다.
  • 따라서 두 문장 모두 if문에 포함된다.

3-1. 들여쓰기는 왜 필요할까?

파이썬에서는 들여쓰기를 이용해서 어떤 코드가 if문에 포함되는지 구분한다.

if 조건:
    실행문1
    실행문2

이를 구조로 보면

if 조건:
    ├─ 실행문1
    └─ 실행문2

와 같이 생각할 수 있다.


다음 코드와 비교해 보자.

age = 20

if age >= 18:
    print("성인입니다.")

print("프로그램 종료")

실행 결과

성인입니다.
프로그램 종료
  • 첫 번째 print()는 들여쓰기되어 있으므로 if문에 포함된다.
  • 두 번째 print()는 들여쓰기되어 있지 않기 때문에 if문과 관계없이 실행된다.

3-2. 잘못된 들여쓰기

들여쓰기가 맞지 않으면 오류가 발생할 수 있다.

if True:
    print("첫 번째")
        print("두 번째")
  • 같은 영역에 있는 코드인데 들여쓰기 깊이가 서로 다르다.

따라서 다음처럼 맞춰 주어야 한다.

if True:
    print("첫 번째")
    print("두 번째")

3-3. 공백 4칸 사용하기

파이썬에서는 일반적으로 들여쓰기에 공백 4칸을 사용한다.

if 조건:
····print("실행")

· 하나를 공백 한 칸이라고 생각하면 된다.

공백 4칸 → 일반적인 파이썬 들여쓰기

에디터에서는 Tab을 눌러도 자동으로 공백 4칸으로 처리되는 경우가 많다.

! 중요

들여쓰기에서 가장 중요한 것은 같은 영역의 코드가 같은 깊이를 가지는 것이다.




4. 콜론(:)을 잊지 말자

파이썬의 if문 조건 뒤에는 반드시 콜론 :을 작성해야 한다.

if age >= 18:

다음처럼 작성하면 안 된다.

if age >= 18
    print("성인")

올바른 형태는 다음과 같다.

if age >= 18:
    print("성인")

콜론 :은 앞으로 배우게 될 while, for, 함수, 클래스 등에서도 계속 등장한다.

if 조건:
while 조건:
for 변수 in 값:

핵심

조건문 끝 → :
다음 줄     → 들여쓰기



5. 조건문이란?

if 뒤에는 참(True) 또는 거짓(False)을 판단할 수 있는 값이나 표현식이 들어간다.

예를 들어

money = True

if money:
    print("사용 가능")

에서 조건은

money

이다.

현재

money = True

이므로 조건이 참이다.


비교 연산식을 조건으로 사용할 수도 있다.

age = 20

if age >= 18:
    print("성인")

여기서 조건은

age >= 18

이다.


조건식의 결과는 결국 다음 둘 중 하나가 된다.

True
False



6. 비교 연산자

조건을 만들 때 가장 많이 사용하는 것이 비교 연산자이다.

비교 연산자의미
x < yx가 y보다 작다
x > yx가 y보다 크다
x == yx와 y가 같다
x != yx와 y가 다르다
x >= yx가 y보다 크거나 같다
x <= yx가 y보다 작거나 같다

6-1. > 연산자

x = 3
y = 2

print(x > y)

실행 결과

True

왜냐하면

3 > 2

는 참이기 때문이다.


6-2. < 연산자

print(x < y)

실행 결과

False
3 < 2

↓

False

6-3. == 연산자

==는 두 값이 같은지 비교한다.

x = 3
y = 2

print(x == y)

실행 결과

False

여기서 =와 ==를 다시 한번 구분하자.

x = 3
= → 값을 저장
x == 3
== → 두 값이 같은지 비교

6-4. != 연산자

!=는 두 값이 다른지 확인한다.

x = 3
y = 2

print(x != y)

실행 결과

True
3과 2는 다른가?

↓

True

6-5. 비교 연산자를 if문에서 사용하기

money = 2000

if money >= 3000:
    print("택시를 이용한다.")
else:
    print("걸어간다.")

실행 결과

걸어간다.

조건은

money >= 3000

이다.

현재 money는 2000이므로

2000 >= 3000

↓

False

따라서 else가 실행된다.




7. and, or, not

여러 조건을 함께 판단하고 싶다면 논리 연산자를 사용할 수 있다.

연산자의미
and두 조건 모두 참이어야 참
or둘 중 하나라도 참이면 참
not참과 거짓을 반대로 변경



7-1. and

and는 양쪽 조건이 모두 참일 때만 True가 된다.

age = 20
has_ticket = True

if age >= 18 and has_ticket:
    print("입장 가능합니다.")

실행 결과

입장 가능합니다.

조건을 나누어 보면

age >= 18

20 >= 18

→ True

그리고

has_ticket

→ True

따라서

True and True

↓

True

가 된다.


and 정리

ABA and B
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

and = 둘 다 참이어야 참




7-2. or

or는 두 조건 중 하나라도 참이면 True가 된다.

money = 2000
card = True

if money >= 3000 or card:
    print("결제할 수 있습니다.")
else:
    print("결제할 수 없습니다.")

실행 결과

결제할 수 있습니다.

조건을 나누어 보면

money >= 3000

2000 >= 3000

→ False

하지만

card

→ True

이므로

False or True

↓

True

가 된다.


or 정리

ABA or B
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

or = 하나라도 참이면 참




7-3. not

not은 참과 거짓을 반대로 바꾼다.

login = False

print(not login)

실행 결과

True

not True  → False

not False → True

조건문에서도 사용할 수 있다.

login = False

if not login:
    print("로그인이 필요합니다.")

실행 결과

로그인이 필요합니다.



8. in과 not in

in은 특정 값이 리스트, 튜플, 문자열 등에 포함되어 있는지 확인할 때 사용한다.

1 in [1, 2, 3]

실행 결과

True

뜻을 그대로 해석하면 된다.

1이 [1, 2, 3] 안에 있는가?

↓

True

8-1. not in

not in은 반대로 값이 포함되어 있지 않은지 확인한다.

1 not in [1, 2, 3]

실행 결과

False

왜냐하면 1은 실제로 리스트 안에 존재하기 때문이다.


8-2. 리스트에서 사용하기

numbers = [1, 2, 3]

print(2 in numbers)
True

8-3. 튜플에서 사용하기

letters = ('a', 'b', 'c')

print('a' in letters)
True

8-4. 문자열에서 사용하기

text = "python"

print('p' in text)
True

print('j' not in text)
True

8-5. if문에서 사용하기

pocket = ['phone', 'wallet', 'money']

if 'money' in pocket:
    print("돈이 있습니다.")
else:
    print("돈이 없습니다.")

실행 결과

돈이 있습니다.

조건은

'money' in pocket

이다.

'money'가 pocket에 있는가?

↓

True

따라서 if 영역이 실행된다.




9. pass

조건은 만들었지만 조건이 참일 때 아무 작업도 하고 싶지 않은 경우가 있을 수 있다.

이때 pass를 사용할 수 있다.

pocket = ['phone', 'money']

if 'money' in pocket:
    pass
else:
    print("돈이 없습니다.")
  • 'money'가 존재하기 때문에 조건은 True이다.
  • 하지만 pass는 아무 작업도 하지 않는다.

다음처럼 빈 코드 영역을 만들면 오류가 발생한다.

if True:

따라서 아직 실행할 코드를 작성하지 않았다면

if True:
    pass

처럼 사용할 수 있다.

핵심

pass

→ 아무 작업도 하지 않고 넘어감



10. 다양한 조건을 판단하는 elif

if와 else만으로는 두 가지 상황만 간단하게 구분할 수 있다.

그런데 다음처럼 조건이 여러 개라면 어떨까?

90점 이상 → A
80점 이상 → B
70점 이상 → C
그 외     → D

이럴 때 사용하는 것이 elif이다.


10-1. elif 기본 구조

if 조건1:
    실행문1
elif 조건2:
    실행문2
elif 조건3:
    실행문3
else:
    실행문4

예제를 만들어 보자.

score = 85

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
else:
    print("D")

실행 결과

B

10-2. 실행 과정

첫 번째 조건을 확인한다.

85 >= 90

↓

False

다음 elif를 확인한다.

85 >= 80

↓

True

따라서

print("B")

가 실행된다.


여기서 중요한 점이 있다.

B 조건이 참이 된 이후에는 아래의 조건을 더 이상 검사하지 않는다.

if        → False

elif      → True ← 여기 실행

아래 elif → 검사하지 않음

else      → 실행하지 않음

10-3. elif는 여러 번 사용할 수 있다

if 조건1:
    ...
elif 조건2:
    ...
elif 조건3:
    ...
elif 조건4:
    ...
else:
    ...

조건이 많다면 필요한 만큼 elif를 사용할 수 있다.


10-4. if / elif / else 정리

if
↓
첫 번째 조건 검사

elif
↓
이전 조건이 거짓이면 다음 조건 검사

else
↓
앞의 모든 조건이 거짓일 때 실행



11. 중첩 if문

if문 안에 또 다른 if문을 넣을 수도 있다.

age = 20
has_ticket = True

if age >= 18:
    if has_ticket:
        print("입장 가능합니다.")
    else:
        print("티켓이 필요합니다.")
else:
    print("미성년자는 입장할 수 없습니다.")

구조를 살펴보면 다음과 같다.

if age >= 18:
│
├─ True
│   │
│   └─ if has_ticket:
│       ├─ True  → 입장 가능
│       └─ False → 티켓 필요
│
└─ False → 미성년자

중첩 if문은 사용할 수 있지만 너무 많이 중첩하면 코드가 복잡해질 수 있다.

가능하다면

if age >= 18 and has_ticket:

처럼 논리 연산자를 이용해서 단순하게 만들 수 있는지도 생각해 보는 것이 좋다.




12. if문을 한 줄로 작성하기

실행할 코드가 매우 간단한 경우 한 줄로 작성할 수도 있다.

일반적인 형태는

if 'money' in pocket:
    pass
else:
    print("카드를 사용한다.")

이다.

이를 다음처럼 작성할 수도 있다.

if 'money' in pocket: pass
else: print("카드를 사용한다.")

문법적으로 가능하지만 처음 공부할 때는 여러 줄로 작성하는 것이 읽기 쉽다.

if 조건:
    실행문
else:
    실행문

코드를 짧게 만드는 것보다 읽기 쉽게 만드는 것이 더 중요하다.




13. match-case문

파이썬에서는 하나의 값을 여러 경우와 비교해야 할 때 match-case문을 사용할 수도 있다.

match-case는 Python 3.10 이상에서 사용할 수 있다.


13-1. if-elif 방식

예를 들어 학점을 확인한다고 해 보자.

grade = 'B'

if grade == 'A':
    print("매우 우수")
elif grade == 'B':
    print("우수")
elif grade == 'C':
    print("보통")
else:
    print("재도전")

실행 결과

우수

같은 작업을 match-case로 작성할 수 있다.

grade = 'B'

match grade:
    case 'A':
        print("매우 우수")
    case 'B':
        print("우수")
    case 'C':
        print("보통")
    case _:
        print("재도전")

실행 결과

우수

13-2. match-case 기본 구조

match 변수:
    case 값1:
        실행문
    case 값2:
        실행문
    case 값3:
        실행문
    case _:
        실행문

위에서부터 값을 비교한다.

변수 == 값1 ?
    ↓ 아니오

변수 == 값2 ?
    ↓ 예

해당 case 실행

13-3. case _

case _는 앞의 어떤 경우에도 해당하지 않을 때 사용한다.

case _:
    print("기타")

if문에서의

else:

와 비슷한 역할을 한다고 생각하면 된다.


13-4. 여러 값을 하나의 case에서 처리하기

|를 사용하면 여러 패턴을 하나의 case에서 처리할 수 있다.

grade = 'B'

match grade:
    case 'A' | 'B' | 'C':
        print("통과")
    case _:
        print("재시험")

실행 결과

통과

'A' 또는 'B' 또는 'C'

↓

같은 case 실행



14. 비교 연산자의 연쇄 사용

파이썬에서는 여러 비교 연산자를 수학식처럼 이어서 사용할 수 있다.

x = 5

print(1 < x < 10)

실행 결과

True

이 코드는 다음과 같은 의미이다.

1 < x

그리고

x < 10

즉,

(1 < x) and (x < 10)

과 같은 의미이다.


14-1. 직접 확인하기

x = 5

print((1 < x) and (x < 10))

실행 결과

True

파이썬에서는 다음 표현이 더 자연스럽고 간결하다.

1 < x < 10

14-2. 범위 확인하기

예를 들어 점수가 0점 이상 100점 이하인지 확인하고 싶다면

score = 85

if 0 <= score <= 100:
    print("정상적인 점수입니다.")

처럼 사용할 수 있다.


다음 표현과 같은 의미이다.

if score >= 0 and score <= 100:

핵심

0 <= score <= 100
0 이상이고 100 이하



15. 조건부 표현식

간단한 if-else를 한 줄로 작성하는 방법도 있다.

이를 조건부 표현식이라고 한다.


예를 들어 다음 코드가 있다고 하자.

score = 85

if score >= 60:
    result = "합격"
else:
    result = "불합격"

print(result)

실행 결과

합격

조건부 표현식을 사용하면 다음처럼 작성할 수 있다.

score = 85

result = "합격" if score >= 60 else "불합격"

print(result)

실행 결과

합격

15-1. 조건부 표현식 구조

변수 = 참일_때_값 if 조건 else 거짓일_때_값

읽는 순서는 다음과 같다.

조건 확인
   │
┌──┴──┐
참    거짓
│      │
▼      ▼
앞 값  뒤 값

예를 들어

age = 20

status = "성인" if age >= 18 else "미성년자"

에서 조건은

age >= 18

이다.

20 >= 18

↓

True

따라서

status = "성인"

이 된다.


15-2. 조건부 표현식 읽는 방법

result = "합격" if score >= 60 else "불합격"

처음 보면 읽기 어려울 수 있다.

다음 순서로 생각하면 쉽다.

score >= 60 인가?

↓

True면 "합격"

False면 "불합격"

15-3. 언제 사용하는 것이 좋을까?

조건부 표현식은 조건과 결과가 간단할 때 사용하면 편리하다.

result = "짝수" if number % 2 == 0 else "홀수"

하지만 조건이 복잡하거나 실행해야 할 코드가 많다면

if 조건:
    ...
else:
    ...

형태로 작성하는 것이 읽기 쉽다.




16. if문 실행 흐름 한눈에 보기

if, elif, else를 전체적으로 정리해 보자.

score = 85

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
else:
    print("D")

실행 과정은 다음과 같다.

score = 85

        ↓

85 >= 90 ?
    │
   False
    ↓

85 >= 80 ?
    │
   True
    ↓

"B" 출력

    ↓

조건 검사 종료

한 번 조건이 참이 되면 그 아래 elif와 else는 실행하지 않는다.




17. 초보자가 자주 하는 실수

17-1. 콜론 빼먹기

if age >= 18
    print("성인")

❌ 잘못된 코드

if age >= 18:
    print("성인")

⭕ 올바른 코드


17-2. =와 == 혼동하기

age = 20

→ 값을 저장

age == 20

→ 값이 같은지 비교


17-3. 들여쓰기 잘못하기

if age >= 18:
    print("성인")
        print("입장 가능")

❌ 들여쓰기 깊이가 다르다.


if age >= 18:
    print("성인")
    print("입장 가능")

⭕ 같은 if 영역이므로 들여쓰기 깊이를 맞춘다.


17-4. elif보다 넓은 조건을 먼저 작성하기

다음 코드를 보자.

score = 95

if score >= 60:
    print("합격")
elif score >= 90:
    print("우수")

실행 결과

합격
  • 95 >= 60이 먼저 True가 되어 버린다.
  • 아래의 elif score >= 90은 검사하지 않는다.

따라서 범위를 판단할 때는 보통 더 구체적이거나 높은 조건부터 작성한다.

score = 95

if score >= 90:
    print("우수")
elif score >= 60:
    print("합격")
else:
    print("불합격")

실행 결과

우수



18. if문 핵심 정리

이번 장에서 가장 중요한 내용을 정리하면 다음과 같다.

if

if 조건:
    실행문
조건이 True → 실행
조건이 False → 실행하지 않음

if - else

if 조건:
    참일 때 실행
else:
    거짓일 때 실행

if - elif - else

if 조건1:
    실행문1
elif 조건2:
    실행문2
else:
    실행문3

비교 연산자

>    크다
<    작다
>=   크거나 같다
<=   작거나 같다
==   같다
!=   다르다

논리 연산자

and → 둘 다 참이어야 참

or  → 하나라도 참이면 참

not → 참/거짓 반대로

포함 여부

값 in 자료형

→ 값이 있는지 확인

값 not in 자료형

→ 값이 없는지 확인


pass

if 조건:
    pass

→ 아무 작업도 하지 않는다.


match-case

match 값:
    case 값1:
        실행
    case 값2:
        실행
    case _:
        실행

→ 하나의 값을 여러 경우로 나누어 처리할 때 사용할 수 있다.


연쇄 비교

1 < x < 10

→ x가 1보다 크고 10보다 작은지 확인


조건부 표현식

result = "합격" if score >= 60 else "불합격"

→ 간단한 if-else를 한 줄로 표현


! if문에서 반드시 기억해야 할 핵심

if문은 결국 조건의 결과가 True인지 False인지 판단하는 문법이다.

조건
│
├─ True  → 해당 코드 실행
│
└─ False → 실행하지 않거나 else 실행

기본 형태는 반드시 기억하자.

if 조건:
   실행문
elif 다른조건:
   실행문
else:
   실행문

그리고 파이썬에서는 {}가 아니라 들여쓰기를 이용해서 코드 영역을 구분한다.

조건 뒤에는 :

조건에 포함되는 코드는 들여쓰기

마지막으로 조건을 만들 때 가장 많이 사용하는 것은 다음과 같다.

비교       → ==, !=, >, <, >=, <=

조건 연결  → and, or, not

포함 확인  → in, not in

if문을 확실하게 이해하면 앞으로 배우게 될 while, for도 훨씬 쉽게 이해할 수 있다.

profile
성실하자:)

0개의 댓글