2.7.2 elif-else 문
다음은 if 문과 연결되는 elif-else 구문입니다. elif-else 문은 조건을 ‘분기’할 수 있습니다. 무슨 말인지 설명하고자 예를 하나 들어 보겠습니다. 다음 코드는 stock_price가 60000인지 한 번 비교하여 거짓이면 print(stock_price) 코드를 실행하지 않고 그대로 프로그램이 종료됩니다.
stock_price = 70000
if stock_price == 60000:
print(stock_price) ------ 이 코드는 실행되지 않고 종료됨
하지만 elif를 사용하면 첫 번째 if 조건에 해당되지 않을 때 elif 조건에 부합하는지 추가로 확인할 수 있습니다.
stock_price = 70000
if stock_price == 60000:
print(stock_price)
elif stock_price > 60000: ------ if 조건에 맞지 않는다면 다른 조건으로 한 번 더 비교
print('elif')
이렇게 if-else를 사용하면 if 문의 조건을 먼저 비교해 보고 참이면 if 문 아래의 코드 블록을 실행하고, 거짓이면 elif 조건을 비교하여 참이면 elif 아래의 코드 블록을 실행합니다. 여기서 중요한 점은 처음 if 문의 조건이 참이라면 elif 문의 조건은 비교하지 않고 그대로 종료된다는 것입니다.
> stock_price = 70000
>
> if stock_price == 70000:
> print(stock_price) ------ 실행
>
> elif stock_price > 60000: ------ if 조건이 참이면 elif 구문이 참이더라도 실행되지 않음
> print('elif')
70000
문법상 기억해야 할 것은 if는 단 한 번만 사용할 수 있으며 조건문의 첫 번째로 등장해야 합니다. elif는 ‘else-if ’의 줄임말로 ‘if가 아니라면’이라는 의미이므로 if 다음에 등장해야 하는 것이 자연스럽다고 이해하면 좋습니다. 그런 이유로 elif가 if보다 먼저 등장한 다음 코드는 문법 오류로 실행되지 않습니다.
> stock_price = 70000
>
> elif stock_price == 70000:
> print(stock_price)
>
> if stock_price > 50000:
> print('elif')
(...)
SyntaxError: invalid syntax
또 if 문이 한 번밖에 사용할 수 없는 것과 달리 elif 문은 여러 번 반복해서 사용할 수 있으며, elif 조건들 중 부합하는 조건이 있다면 그다음에 나오는 elif 조건들은 실행되지 않고 무시됩니다.
> stock_price = 70000
>
> if stock_price == 60000:
> print(stock_price) ------ 실행 안 됨
>
> elif stock_price > 70000:
> print('elif1') ------ 실행 안 됨
>
> elif stock_price > 50000:
> print('elif2') ------ 실행됨
>
> elif stock_price > 40000:
> print('elif3') ------ 실행 안 됨
elif2
많은 조건을 사용했지만 아무것도 만족하지 않으면 if-elif 구문은 실행되지 않고 종료됩니다. 이렇게 어느 조건에도 해당하지 않을 때 else를 사용할 수 있습니다. else 구문 아래에는 이 조건 저 조건에도 해당되지 않을 때 실행할 코드를 작성할 수 있으며, if-elif 구문과 달리 아무런 조건도 필요 하지 않습니다. 예를 들어 살펴보겠습니다.
> stock_price = 70000
>
> if stock_price == 60000:
> print(stock_price) ------ 실행 안 됨
>
> elif stock_price > 70000:
> print('elif1') ------ 실행 안 됨
>
> elif stock_price > 80000:
> print('elif2') ------ 실행 안 됨
>
> elif stock_price > 90000:
> print('elif3') ------ 실행 안 됨
>
> else:
> print('if-elif 중 어느 조건에도 해당되지 않으면 이 부분이 실행됩니다.') ------ 실행 됨
if-elif 중 어느 조건에도 해당되지 않으면 이 부분이 실행됩니다.
elif 문과 마찬가지로 else 문 위에 존재하는 if-elif 조건 중 하나라도 만족한다면 else 영역은 실행되지 않으며, if 문 없이 else 문만 사용할 수는 없습니다.
> stock_price = 70000
> else: ------ 실행 안 됨
> print('if 없이 사용 불가')
SyntaxError: invalid syntax