else와 elif를 사용하여 분기 처리하기

Tasker_Jang·2026년 2월 8일

들어가며

이전 포스트에서 if문으로 조건이 참일 때 코드를 실행하는 방법을 배웠습니다. 하지만 실제 프로그래밍에서는 "조건이 참일 때"와 "거짓일 때"를 모두 처리해야 하는 경우가 많습니다. 이번 포스트에서는 elseelif를 사용하여 완벽한 분기 처리(branching)를 하는 방법을 알아보겠습니다.

else: 조건이 거짓일 때

문제 상황

if만 사용하면 조건이 거짓일 때를 처리하기 번거롭습니다.

age = 15

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

if age < 18:  # 반대 조건을 다시 작성
    print('미성년자입니다')

해결: else 사용

elseif 조건이 거짓일 때 실행됩니다.

age = 15

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

실행 결과:

미성년자입니다

else 기본 문법

if 조건식:
    # 조건이 참일 때 실행
    코드1
else:
    # 조건이 거짓일 때 실행
    코드2

핵심 규칙:
1. else 뒤에 조건식 없음
2. else: 끝에 콜론(:) 필수
3. elseif들여쓰기 깊이가 같아야 함
4. else 본문도 들여쓰기 4칸

들여쓰기 규칙

# 올바른 예
if True:
    print('if 블록')
else:
    print('else 블록')

# 잘못된 예 - 에러!
if True:
    print('if 블록')
  else:  # 들여쓰기가 다름 - IndentationError!
    print('else 블록')

시각화:

if 조건:        (0칸)
    코드A       (4칸 - if 본문)
    코드B       (4칸 - if 본문)
else:           (0칸 - if와 같은 깊이)
    코드C       (4칸 - else 본문)
    코드D       (4칸 - else 본문)

흐름도로 이해하기

age = 20

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

print('프로그램 종료')

흐름:

age >= 18 조건 확인
    ↓
   True일 때 → '성인입니다' 출력 → '프로그램 종료' 출력
   False일 때 → '미성년자입니다' 출력 → '프로그램 종료' 출력

다양한 예제

1. 짝수/홀수 판별

number = int(input('숫자를 입력하세요: '))

if number % 2 == 0:
    print(f'{number}는 짝수입니다')
else:
    print(f'{number}는 홀수입니다')

실행 결과 (입력: 7):

숫자를 입력하세요: 7
7는 홀수입니다

2. 로그인 확인

password = input('비밀번호를 입력하세요: ')
correct_password = 'python123'

if password == correct_password:
    print('로그인 성공!')
    print('환영합니다!')
else:
    print('비밀번호가 틀렸습니다')
    print('다시 시도해주세요')

3. 합격/불합격 판정

score = int(input('점수를 입력하세요: '))

if score >= 60:
    print('합격입니다!')
    print(f'당신의 점수: {score}점')
else:
    print('불합격입니다')
    print('재시험을 준비하세요')

4. 최대값 찾기

a = 10
b = 20

if a > b:
    print(f'최대값: {a}')
else:
    print(f'최대값: {b}')

실행 결과:

최대값: 20

조건식에 숫자 사용하기

파이썬에서 0은 False, 그 외의 모든 숫자는 True로 평가됩니다.

0은 False

if 0:
    print('실행되지 않음')
else:
    print('0은 False입니다')

실행 결과:

0은 False입니다

0 이외의 숫자는 True

# 양수
if 1:
    print('1은 True입니다')

# 음수
if -1:
    print('-1도 True입니다')

# 실수
if 3.14:
    print('3.14도 True입니다')

# 큰 숫자
if 100:
    print('100도 True입니다')

모두 실행됩니다!

실용 예제

count = int(input('개수를 입력하세요: '))

if count:  # count가 0이 아니면
    print(f'{count}개가 있습니다')
else:  # count가 0이면
    print('개수가 0입니다')

실행 결과 (입력: 0):

개수를 입력하세요: 0
개수가 0입니다

Truthy/Falsy 복습

숫자뿐 아니라 다른 자료형도 참/거짓으로 평가됩니다.

Falsy 값 (거짓으로 평가)

# False
if False:
    print('실행 안 됨')
else:
    print('False는 거짓')

# 0
if 0:
    print('실행 안 됨')
else:
    print('0은 거짓')

# 빈 문자열
if '':
    print('실행 안 됨')
else:
    print('빈 문자열은 거짓')

# 빈 리스트
if []:
    print('실행 안 됨')
else:
    print('빈 리스트는 거짓')

# None
if None:
    print('실행 안 됨')
else:
    print('None은 거짓')

Truthy 값 (참으로 평가)

# True
if True:
    print('True는 참')

# 0이 아닌 숫자
if 1:
    print('1은 참')

# 비어있지 않은 문자열
if 'Hello':
    print('문자열이 있으면 참')

# 비어있지 않은 리스트
if [1, 2, 3]:
    print('리스트에 요소가 있으면 참')

elif: 여러 조건 처리하기

elif(else if의 줄임말)는 여러 조건을 순차적으로 확인할 때 사용합니다.

문제 상황: else만으로는 부족

score = 75

if score >= 90:
    print('A')
else:
    if score >= 80:
        print('B')
    else:
        if score >= 70:
            print('C')
        else:
            print('F')

중첩이 깊어져서 읽기 어렵습니다.

해결: elif 사용

score = 75

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

실행 결과:

C

훨씬 간결하고 읽기 쉽습니다!

elif 기본 문법

if 조건1:
    # 조건1이 참일 때
    코드1
elif 조건2:
    # 조건1이 거짓이고 조건2가 참일 때
    코드2
elif 조건3:
    # 조건1, 2가 거짓이고 조건3이 참일 때
    코드3
else:
    # 모든 조건이 거짓일 때
    코드4

핵심 규칙:
1. elififelse 사이에 위치
2. elif는 여러 개 사용 가능
3. else는 선택사항 (없어도 됨)
4. 위에서부터 순차적으로 검사, 참인 조건을 만나면 나머지는 무시

순차 검사 예시

score = 85

if score >= 90:
    print('A')
elif score >= 80:  # 이 조건이 참 → 실행하고 종료
    print('B')
elif score >= 70:  # 검사하지 않음
    print('C')
else:  # 실행하지 않음
    print('F')

실행 결과:

B

흐름:
1. score >= 9085 >= 90False
2. score >= 8085 >= 80True'B' 출력 후 종료
3. 나머지 elifelse는 검사하지 않음

elif 활용 예제

1. 학점 계산기

score = int(input('점수를 입력하세요: '))

if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'F'

print(f'학점: {grade}')

실행 결과 (입력: 85):

점수를 입력하세요: 85
학점: B

2. 계절 판별

month = int(input('월을 입력하세요 (1-12): '))

if month >= 3 and month <= 5:
    season = '봄'
elif month >= 6 and month <= 8:
    season = '여름'
elif month >= 9 and month <= 11:
    season = '가을'
elif month == 12 or month == 1 or month == 2:
    season = '겨울'
else:
    season = '잘못된 입력'

print(f'{month}월은 {season}입니다')

실행 결과 (입력: 7):

월을 입력하세요 (1-12): 7
7월은 여름입니다

3. BMI 계산기

weight = float(input('체중(kg): '))
height = float(input('키(m): '))

bmi = weight / (height ** 2)

if bmi < 18.5:
    status = '저체중'
elif bmi < 23:
    status = '정상'
elif bmi < 25:
    status = '과체중'
else:
    status = '비만'

print(f'BMI: {bmi:.2f}')
print(f'상태: {status}')

4. 나이대 분류

age = int(input('나이를 입력하세요: '))

if age < 0:
    print('잘못된 입력입니다')
elif age < 8:
    print('유아')
elif age < 14:
    print('초등학생')
elif age < 17:
    print('중학생')
elif age < 20:
    print('고등학생')
elif age < 65:
    print('성인')
else:
    print('노인')

else 생략 가능

else필수가 아닙니다. 모든 조건이 거짓일 때 아무것도 하지 않아도 된다면 생략할 수 있습니다.

score = 50

if score >= 90:
    print('A')
elif score >= 80:
    print('B')
elif score >= 70:
    print('C')
# else가 없으므로 아무것도 출력되지 않음

실행 결과:

(아무것도 출력 안 됨)

중첩 if-else

if-else 안에 또 다른 if-else를 넣을 수 있습니다.

age = 25
has_ticket = True

if age >= 18:
    print('성인 확인 완료')
    
    if has_ticket:
        print('티켓 확인 완료')
        print('입장 가능합니다')
    else:
        print('티켓이 없습니다')
        print('티켓을 구매해주세요')
else:
    print('미성년자는 입장 불가합니다')

실행 결과 (age=25, has_ticket=True):

성인 확인 완료
티켓 확인 완료
입장 가능합니다

조건문 최적화 팁

1. 가장 흔한 조건을 먼저

# 좋은 예 (대부분 성인이라면)
if age >= 18:
    print('성인')
else:
    print('미성년자')

# 나쁜 예
if age < 18:
    print('미성년자')
else:
    print('성인')

2. 복잡한 조건은 변수로 분리

# 나쁜 예 (읽기 어려움)
if (age >= 18 and has_ticket and not is_banned) or is_vip:
    print('입장 가능')

# 좋은 예 (읽기 쉬움)
is_adult = age >= 18
can_enter_normally = is_adult and has_ticket and not is_banned
can_enter = can_enter_normally or is_vip

if can_enter:
    print('입장 가능')

3. 조기 반환 (Early Return)

함수에서는 조건에 맞지 않으면 바로 반환하는 것이 좋습니다.

def check_age(age):
    # 나쁜 예
    if age >= 18:
        return '성인'
    else:
        return '미성년자'
    
    # 좋은 예
    if age >= 18:
        return '성인'
    return '미성년자'

흔한 실수와 해결

실수 1: elif에 조건식 누락

# 잘못된 코드
if score >= 90:
    print('A')
elif:  # SyntaxError: 조건식 필요
    print('B')

# 올바른 코드
if score >= 90:
    print('A')
elif score >= 80:
    print('B')

실수 2: else 뒤에 조건식 작성

# 잘못된 코드
if score >= 90:
    print('A')
else score >= 80:  # SyntaxError
    print('B')

# 올바른 코드
if score >= 90:
    print('A')
elif score >= 80:
    print('B')

실수 3: 조건 순서 잘못됨

# 잘못된 예 (70 이상이면 모두 C)
score = 85

if score >= 70:  # 85 >= 70 → True, 여기서 종료
    print('C')
elif score >= 80:  # 검사 안 함
    print('B')

# 올바른 예 (큰 값부터 검사)
if score >= 90:
    print('A')
elif score >= 80:
    print('B')
elif score >= 70:
    print('C')
profile
ML Engineer 🧠 | AI 모델 개발과 최적화 경험을 기록하며 성장하는 개발자 🚀 The light that burns twice as bright burns half as long ✨

0개의 댓글