if, elif, else문과 중첩 조건문
1. if - else
if문을 사용하면 조건을 기반으로 서로 다른 코드 블록을 실행할 수 있습니다. 그러나 조건이 많아질수록 if문만으로는 코드를 효율적으로 관리하기 어렵습니다. 이러한 문제를 해결하기 위해, else문을 사용하여 if문의 조건이 거짓이거나 충족되지 않는 경우를 처리할 수 있습니다.
이제 if문과 else문을 활용한 기본적인 조건문의 구조를 살펴보겠습니다.
# if, else문의 기본구조
if 조건문: # 조건문을 확인해서 만약 '참'이면 if 문 다음에 문장들은 수행합니다.
pass
# 수행할 문장 1
else: # if문의 조건이 거짓이면 else 문이 실행됩니다.
pass
# 수행할 문장 2
# if, else문의 기본구조
if 조건문: # 조건문을 확인해서 만약 '참'이면 if 문 다음에 문장들은 수행합니다.
pass
# 수행할 문장 1
else: # if문의 조건이 거짓이면 else 문이 실행됩니다.
pass
# 수행할 문장 2
if 문의 조건문을 확인해서 만약 참이면 수행할 문장 1
, 조건이 거짓이면 else 문이 실행되어 수행할 문장 2
가 수행됩니다.
2. if - elif - else
두 개의 조건만 있을 경우에는 if-else를 주로 활용하지만 세 개 이상의 여러 개의 조건을 한꺼번에 검사해야 할 경우에는 elif를 사용합니다. elif는 필요한 만큼 사용할 수 있습니다. 그리고 마지막에 else를 사용함으로써 조건에 대해서 마무리하게 됩니다.
# if, elif, else문의 기본구조
if 조건문: # 조건문을 확인해서 만약 '참'이면 if 문 다음에 문장들은 수행합니다.
# 수행할 문장 1
pass
elif: # if문의 조건이 '참'이 아니라면 elif 문의 조건문이 참이라면 수행한다.
# 수행할 문장 2
pass
else: # 위 모든 if문, elif문의 조건이 '참'이 아니라면 수행합니다.
# 수행할 문장 3
pass
# if, elif, else문의 기본구조
if 조건문: # 조건문을 확인해서 만약 '참'이면 if 문 다음에 문장들은 수행합니다.
# 수행할 문장 1
pass
elif: # if문의 조건이 '참'이 아니라면 elif 문의 조건문이 참이라면 수행한다.
# 수행할 문장 2
pass
else: # 위 모든 if문, elif문의 조건이 '참'이 아니라면 수행합니다.
# 수행할 문장 3
pass
위 코드에서 if나 elif문 뒤가 참이면 코드를 수행하고, 모두 거짓일 경우 else문을 출력합니다.
아래 성적을 입력받아 학점을 매기는 프로그램을 작성한다 생각해보겠습니다.
위 코드는 아래와 같이 변경할 수 있습니다.
이미 첫 번째 코드에서 False라는 것은 그 아래 점수는 90점 미만이라는 의미가 내포되어 있기 때문입니다.
아래에 있는 예제를 통하여 좀 더 알아보겠습니다. score에 따라 용돈을 받는 코드입니다.
위 구문에서 elif로 되어 있는 부분을 모두 if로 바꿔보도록 하겠습니다.
매번 if문에 걸리기 때문에 용돈을 111,000원 받게 됩니다. 또한 매번 if 뒤에 조건을 검사하니 코드의 성능도 떨어집니다. 아래처럼 작성되었을 때 첫 번째 사용했던 예제와 결과도 같고, 의도한 바대로 용돈도 10만 원을 받지만, 성능은 떨어집니다.
elif와 else 단독으로는 사용할 수 없으며, elif는 if가 있어야만, else는 if, elif나 뒤에서 배울 for, while이 있어야만 사용할 수 있습니다.
3. 중첩 if - elif문 사용하기
중첩 조건문은 조건문 안에 또 다른 조건문을 포함하는 것으로, 코드의 흐름을 다양한 경로로 분기시킬 수 있게 합니다.
이렇게 중첩되어 있는 조건문은 and를 사용하여 아래와 같이 변경할 수 있습니다.
다만 이렇게 하였을 경우 가독성이 안 좋아진 것을 한 눈에 파악할 수 있습니다. 따라서 and로 if 조건을 묶을 경우 의미와 맥락을 파악하여 적절한 곳에서 묶어 가독성을 높여야 합니다.
중첩된 조건문에서는 elif, else을 모두 사용할 수 있습니다.