15.1 elif 사용하기

Unit 15. elif를 사용하여 여러 방향으로 분기하기

프로그램을 만들다 보면 참, 거짓으로만 분기하는 것은 한계가 있습니다. 실제로는 두 가지 이상의 다양한 상황이 발생하죠.

여러 가지 상황을 처리하는 대표적인 예는 음료수 자판기가 있습니다.

그림 15-1 음료수 자판기

자판기 안에는 각각 다른 종류의 음료수가 들어있고, 버튼을 누르면 해당 버튼에 해당하는 음료수가 나옵니다. 이걸 elif로 만들면 다음과 같은 모양이 됩니다.

if 콜라 버튼을 눌렀다면:
    콜라를 내보냄
elif 사이다 버튼을 눌렀다면:
    사이다를 내보냄
elif 환타 버튼을 눌렀다면:
    환타를 내보냄:
else:
    제공하지 않는 메뉴

즉, elif는 조건식을 여러 개 지정하여 각 조건 마다 다른 코드를 실행할 수 있습니다.

15.1 elif 사용하기

elifelse인 상태에서 조건식을 지정할 때 사용하며 else if라는 뜻입니다. 물론 if, else와 마찬가지로 조건식 끝에 :(콜론)을 붙여야 하고, elif 단독으로 사용할 수 없습니다.

if 조건식:
     코드1
elif 조건식:
     코드2

그럼 다음과 같이 들여쓰기를 맞춰서 파이썬 셸에 코드를 입력해보세요.

>>> x = 20
>>> if x == 10:
...      print('10입니다.')
... elif x == 20:
...      print('20입니다.')
... 
20입니다.

이렇게 하면 처음 if에서 x가 10인지 검사한 뒤 참이면 '10입니다.'를 출력하고, 거짓이면 그 다음에 오는 elif에서 x가 20인지 검사합니다. 만약 elif의 조건식이 참이면 '20입니다.'를 출력하고, 거짓이면 아무것도 출력하지 않습니다. 여기서는 x가 20이라 elif의 조건식에 만족하므로 '20입니다'가 출력됩니다.

그러면 x가 10도 아니고 20도 아니라면 나머지는 어떻게 처리할까요? 이때는 if, elif, else를 모두 사용하면 됩니다.

15.1.1  if, elif, else를 모두 사용하기

elifelse는 단독으로 사용할 수 없으며 if, else 형태로 사용하거나, if, elif, else 형태로 사용합니다. 이번에는 if, elif, else를 모두 사용해보겠습니다.

if 조건식:
    코드1
elif 조건식:
    코드2
else:
    코드3

다음 내용을 IDLE의 소스 코드 편집 창에 입력한 뒤 실행해보세요(파이썬 셸에서 사용하는 방법은 많이 해보았으니 생략하겠습니다).

if_elif_else.py

x = 30
 
if x == 10:             # x가 10일 때
    print('10입니다.')
elif x == 20:           # x가 20일 때
    print('20입니다.')
else:                   # 앞의 조건식에 모두 만족하지 않을 때
    print('10도 20도 아닙니다.')

실행 결과

10도 20도 아닙니다.

이렇게 하면 if, elif의 조건식이 모두 거짓일 때만 else의 코드가 실행됩니다. 여기서는 x가 30이라 if, elif의 조건식에 모두 만족하지 않습니다. 따라서 마지막 else'10도 20도 아닙니다.'가 출력됩니다.

참고로 ifelse는 한 번만 사용할 수 있지만, elif는 여러 번 사용할 수 있습니다. 그리고 elif의 들여쓰기 규칙은 if, else와 같으므로 따로 설명하지 않겠습니다.

만약 elif 앞에 else가 오면 잘못된 문법이므로 주의해야 합니다.

if x == 10:
    print('10입니다.')
else:
    print('10도 20도 아닙니다.')
elif x == 20:    # elif 앞에 else가 오면 잘못된 문법
    print('20입니다.')

15.1.2  음료수 자판기 만들기

이제 음료수 자판기를 만들어봅시다. 버튼 1번은 '콜라', 2번은 '사이다', 3번은 '환타'이고 각 버튼에 따라 음료수 이름을 출력한다고 하죠(1, 2, 3이외의 숫자는 '제공하지 않는 메뉴' 출력). 코드를 보기 전에 어떻게 만들면 될 지 머리 속으로 한 번 생각해보세요.

vending_machine.py

button = int(input())
 
if button == 1:
    print('콜라')
elif button == 2:
    print('사이다')
elif button == 3:
    print('환타')
else:
    print('제공하지 않는 메뉴')

실행 결과

1 (입력)
콜라

실제 자판기에서는 버튼 개수가 정해져 있어서 1, 2, 3번 이외의 버튼이 입력될 가능성이 거의 없습니다. 하지만 프로그램에서는 예상치 못한 값이 입력되는 경우가 자주 있습니다(예를 들어 숫자만 입력하라고 했는데 사용자가 문자열을 입력한다든지…). 따라서 잘못된 값에 대한 처리는 꼭 해주는 것이 좋습니다.

지금까지 if, elif, else로 조건에 따라 분기하는 방법을 배웠습니다. 여기서는 if, elif, else 끝에 :(콜론)을 붙인다는 점과 다음 줄에서는 반드시 들여쓰기를 한다는 점이 중요합니다.