Python/기초

파이썬 조건문(if, elif, else, 조건부 표현식, 구조적 패턴 매칭 math case)

sdesign416 2026. 5. 26. 21:50

Python에서 조건문은 주어진 조건(True/False)을 판단하여,

그 결과에 따라 코드 블록을 수행 할 수 있도록 해주는 구조를 말한다.

 

예를 들어, 특정 숫자가 짝수인지 홀수인지 판단하여

짝수일 경우 "짝수입니다"라는 메시지를 출력하고

음수일 경우 "음수입니다"라는 메시지를 출력하는것처럼

 

상황에 따라 다양한 방식의 조건문을 제공하여

간단한 조건처리부터 복잡한 데이터 처리까지 유연하게 구현할 수 있다.


1. if, elif, else

파이썬에서는 아래와 같은 3가지 조건문을 제공한다.

  • if문
  • if-else문
  • if-elif-else문

1) if문

if문은 가장 기본적인 조건문이다.

 

기본 구조는 조건식이 True 또는 False와 같은 불리언(Boolean) 값을 반환하는 형태로 이루어진다. 

조건식이 참인 경우에만 코드 블록이 수행된다.

if 조건식:
	코드 블록

 

💡if문 언제사용하면 좋을까?

특정 조건 하나만 검사하면 될 때 간단하게 사용할 수 있다.

  • 로그인 성공 여부
  • 파일 존재 여부
  • 특정 값 이상인지 검사

2) if-else문 

if-else문은 조건식이 참인 경우엔 코드 블록 1이 수행되고,

거짓인 경우엔 코드 블록 2가 수행되는 구조이다.

 

if-else문은 if문과 달리 조건식이 참인 경우와 거짓인 경우 모두를 처리할 수 있다.

if 조건식:
	코드 블록 1
else:
	코드 블록 2

 

💡else문 언제사용하면 좋을까?

조건이 참일때와 거짓일때를

명확하게 나누고 싶을 때 사용한다.

  • 성공 / 실패
  • 로그인 / 비로그인
  • 가능 / 불가능

위와 같이 결과가 두 가지로 나뉠때 많이 사용된다.


3) elif문

if-elif-else문은 여러 조건을 순서대로 검사할 때 사용하는 조건문이다.

 

기본 구조는 위에서부터 조건식을 하나씩 확인하며,

처음으로 참(True)이 되는 코드 블록만 수행된다.

 

즉, 하나의 조건이 실행되면
그 아래의 elif 와 else 는 검사하지 않는다.

 

if 조건식1:
    코드 블록 1

elif 조건식2:
    코드 블록 2

elif 조건식3:
    코드 블록 3

else:
    코드 블록 4

위 코드는 아래의 순서로 실행된다.

  1. score >= 90 검사 → 거짓(False)
  2. score >= 80 검사 → 참(True)
  3. "B" 출력
  4. 아래 조건들은 더 이상 검사하지 않음

 

💡else문 언제사용하면 좋을까?

여러 경우 중 하나를 선택해야 할 때 많이 사용된다.

  • 점수 등급 처리
  • 메뉴 선택
  • 상태별 조건 처리

다만 조건이 너무 많아지면 코드가 길어질  수 있다.

이럴 경우에는 뒤에서 설명할 match-case 문이 더 읽기 편한 경우도 있다.


 

2. 왈러스 연산자(:=)

왈러스 연산자(Walrus Operator)는
Python 3.8부터 추가된 문법이다.

 

값을 변수에 저장하면서 동시에 조건식 안에서 사용할 수 있다.

 

즉, 값을 저장하는 기능 조건 비교 기능

한 줄에서 함께 수행할 수 있는 문법이다.


2_1) 왈러스 연산자 사용방법

기존에는 아래처럼

  1. 값을 저장하고
  2. 다시 조건식에서 검사

하는 과정을 따로 작성해야 했다.

# 기존 코드
text = input("아이디를 입력하세요:")

length = len(text)

if length < 3:
    print("아이디가 너무 짧습니다.")

 

하지만 왈러스 연산자를 사용하면 아래와 같이

값을 저장하면서 동시에 if 조건 비교까지 수행할 수 있다.

text = input("아이디를 입력하세요: ")

# 연산 순서
# 1. len(text) 실행
# 2. 결과값을 length 변수에 저장
# 3. length < 3 비교 수행

if (length := len(text)) < 3:
    print(f"아이디가 너무 짧습니다. (입력한 글자 수: {length})")

else:
    print(f"아이디 '{text}'는 사용 가능합니다.")

2_2) 왈러스 연산자 실행 순서 이해하기

if (length := len(text)) < 3:

위 코드로 예시를 들면

 

1) len(text) 실행

len(text) 입력한 문자열의 길이를 계산한다.

예를 들어 'ab'를 입력했다면 결과는 2가 나온다.

 

2) 결과값을 변수에 저장

length := 3 계산된 값을 length 변수에 저장한다.

즉 아래 코드와 같은 의미로 계산된다.

length = len(text)

 

3) 조건식 비교 수행

length < 3 저장된 값을 이용해 조건을 비교한다.

  • 참(True) → if 블록 실행
  • 거짓(False) → else 블록 실행

💡왈러스 연산자 언제사용하면 좋을까?

왈러스 연산자는 코드를 짧게 만들 수 있다는 장점이 있어

간단한 조건 처리에서 사용하는 경우가 많다.

  • 입력값 검사
  • 반복문
  • 함수 결과 재사용

 

다만 너무 복잡한 조건식 안에서 사용하면

오히려 가독성이 떨어질 수 있다는 점을 주의해야 한다.


3. 구조적 패턴 매칭(match-case 문)

Python 3.10부터 추가된 문법으로

특정 값에 따라 여러 경우를 깔끔하게 나눌 수 있다.

 

Java/C의 switch-case와 비슷하지만 훨씬 더 강력한 기능을 가진다.

match 값:
    case 패턴1:
        실행코드

    case 패턴2:
        실행코드

    case _:
        기본코드

여기서 _ 는 기본(default) 역할이다.


 

3_1) 예제


💡match-case 문은 언제사용하면 좋을까?

if-elif 조건이 너무 길어질 때 유용하다.

예를 들어 아래처럼 조건이 많아질수록 코드가 길어지게 된다.

 

이럴 때 match-case 를 사용하면 더 깔끔하게 정리할 수 있다.

특히 특정 값 기준으로 나뉘는 경우에 적합하다.

  • 메뉴 선택
  • 명령어 처리
  • 상태별 조건 처리

4. 간단한 조건문 프로그램 만들기

지금까지 배운 조건문과 문자열 함수를 활용해서

사용자의 닉네임을 입력받은 후 음식 취향을 기반으로

추천 메뉴를 출력하는 프로그램 을 만들어보았다.

 

해당 프로그램에서는 아래 코드들을 함께 사용하였다.

  • if
  • else
  • input()
  • lower()
  • len()

 

4_1) 음식 취향 분석 프로그램 코드

사용자의 닉네임을 먼저 입력받고,

취향을 분석하여 추천 메뉴를 출력하는 간단한 프로그램이다.

print("음식 취향 분석 프로그램에 오신 것을 환영합니다.")

# 닉네임 입력
nickname = input("닉네임을 입력하세요: ")

# 닉네임 길이 검사 (len 사용)
if len(nickname) < 2:
    print("닉네임이 너무 짧습니다. 다시 실행해주세요.")

else:
    print(f"{nickname}님 반갑습니다.")

    # 첫 번째 질문
    answer1 = input("Q1. 매운 음식을 좋아하시나요? (y/n): ")

    if answer1.lower() == "y":

        # 매운 음식 그룹
        answer2 = input("Q2. 국물 요리를 좋아하시나요? (y/n): ")

        if answer2.lower() == "y":
            menu = "마라탕"

        else:
            menu = "불닭볶음면"

    else:

        # 순한 음식 그룹
        answer2 = input("Q2. 밥 종류를 좋아하시나요? (y/n): ")

        if answer2.lower() == "y":
            menu = "초밥"

        else:
            menu = "파스타"

    # 최종 결과 출력
    print(f"{nickname}님에게 추천하는 메뉴는 {menu}입니다.")

4_2) 코드 실행 흐름

1) 닉네임 입력과 len() 검사

nickname = input("닉네임을 입력하세요: ")

if len(nickname) < 2:

먼저 사용자의 닉네임을 입력받는다.

 

이때 len() 함수를 사용해 입력된 문자열의 길이를 확인하고,
닉네임이 너무 짧은 경우를 조건으로 걸어준다.

 

2) lower()를 활용한 입력 처리

if answer1.lower() == "y":

사용자가 입력한 값은 문자열로 저장되기 때문에
대소문자가 섞여 들어올 수 있다.

 

이때 대문자, 소문자 모두 동일하게 처리하기 위해 lower()를 사용한다.

이 과정을 통해 입력값을 항상 소문자로 통일할 수 있다.

tip : 대문자로 변환하여 사용할때는 upper() 로 사용할 수 있다.

 

 

3) 중첩 조건문

if answer1.lower() == "y":
    if answer2.lower() == "y":

조건문 안에 또 다른 조건문이 들어가는 구조를
중첩 조건문이라고 한다.

 

위 프로그램에서는 아래 두가지 조건을 기준으로 메뉴를 결정하기 때문에

중첩 조건문을 사용하여 취향을 분석한다.

  • 매운 음식 여부
  • 국물 또는 밥 종류 여부

 

4) 최종 실행 흐름

최종적인 흐름음 사용자가 입력한 값에 따라 아래와 같이 진행된다.

  1. 닉네임 입력
  2. 닉네임 길이 검사
  3. 매운 음식 여부 확인
  4. 세부 취향 확인
  5. 최종 메뉴 결정
  6. 결과 출력

4_3) 실행 예시

닉네임을 입력하세요: 김사과
김사과님 반갑습니다.

Q1. 매운 음식을 좋아하시나요? (y/n): y
Q2. 국물 요리를 좋아하시나요? (y/n): y

김사과님에게 추천하는 메뉴는 마라탕입니다.

정리

  • if / elif / else는 조건에 따라 실행 흐름을 나누는 기본 구조이다.
  • 왈러스 연산자(:=)는 값을 저장하면서 조건을 함께 처리할 수 있다.
  • match-case는 여러 값을 기준으로 나눌때 코드 가독성을 높여준다.