조건문
조건문(conditional statements)
다음 그림은 ‘달면 삼키고 쓰면 뱉는다.’는 속담을 순서도(flow chart)로 작성해 본 것입니다.
순서도에 따르면 조건인 맛(taste)에 따라 달면 삼키고, 달지 않으면 뱉는 서로 다른 행동을 취하게 됩니다.
이처럼 조건문이란 주어진 조건식의 결과에 따라 다른 명령을 수행하도록 프로그램의 흐름을 제어하는 명령문을 의미합니다.
if-else 문
파이썬에서는 조건 분기를 표현하기 위해 if-else문을 사용합니다.
문법
if 조건식:
조건식의 결과가 참(True)일 때만 실행되는 명령문
else:
조건식의 결과가 거짓(False)일 때만 실행되는 명령문
if-else 문은 if 키워드 뒤에 위치한 조건식의 결과에 따라 실행되는 명령문이 달라집니다.
조건식의 결과가 참(True)인 경우에는 if 문 바로 다음의 명령문들이 실행되며, else 문 다음의 명령문들은 실행되지 않습니다.
반대로 조건식의 결과가 거짓(False)인 경우에는 else 문 바로 다음의 명령문들이 실행되며, if 문 바로 다음의 명령문들은 실행되지 않습니다
파이썬에서 블록(block)은 콜론(:)으로 시작하여 동일한 들여쓰기(indentation) 구간을 의미하므로, if 키워드와 else 키워드의 맨 끝에도 반드시 콜론(:)을 삽입해야 합니다.
if 문은 단독으로도 사용할 수 있지만, else 문은 반드시 if 문과 함께 사용해야 합니다.
다음 예제는 앞서 살펴본 순서도를 그대로 파이썬으로 구현해 본 예제입니다.
실행 결과
삼키다
if-elif-else 문
if-else 문만으로는 우리가 실제로 구현해야 하는 복잡한 조건들을 제대로 표현하는 것이 매우 힘들고 어렵습니다.
다음은 if-else 문을 사용하여 계절에 따라 서로 다른 문자열을 출력하도록 하는 예제입니다.
예제
season = "summer"
if season == "spring":
print("봄이 왔네요!")
else:
if season == "summer":
print("여름에는 더워요~")
else:
if season == "fall":
print("가을은 독서의 계절!")
else:
if season == "winter":
print("겨울에는 눈이 와요~")
실행 결과
여름에는 더워요~
위와 같이 단순한 질문을 코드로 표현하는 것에도 총 4개의 if-else 문을 중첩해서 사용해야 했으며, 이에 따라 블록 자체도 매우 복잡해져 코드의 가독성 또한 현저히 안 좋아졌습니다.
이러한 불편함을 해소하기 위해 파이썬에서는 if와 else 이외에도 elif라는 키워드를 별도로 제공하고 있습니다.
elif 키워드는 else if의 줄임말로 else 문과 또 다른 if 문을 하나로 합쳐놓은 역할을 합니다.
문법
if 조건식1:
조건식1의 결과가 참(True)일 때만 실행되는 명령문
elif 조건식2:
조건식2의 결과가 참(True)일 때만 실행되는 명령문
else:
조건식1, 2의 결과가 모두 거짓(False)일 때만 실행되는 명령문
elif 문도 else 문과 마찬가지로 반드시 if 문과 함께 사용해야 합니다.
앞서 살펴본 예제를 elif 문을 사용하여 다시 구현하면 다음과 같습니다.
예제
season = "winter"
if season == "spring":
print("봄이 왔네요!")
elif season == "summer":
print("여름에는 더워요~")
elif season == "fall":
print("가을은 독서의 계절!")
elif season == "winter":
print("겨울에는 눈이 와요~")
실행 결과
겨울에는 눈이 와요~
이처럼 elif 문을 사용하면 코드가 훨씬 간결해지며 가독성 또한 높아집니다. 이러한 elif 문은 하나의 if 문내에서 개수에 상관없이 사용할 수 있습니다.
대부분의 프로그래밍 언어에서 제공하는 또 다른 조건문인 switch-case 문을 파이썬에서는 별도로 제공하지 않습니다.
파이썬에서는 switch-case 문 대신 elif 문을 사용하도록 권고하고 있습니다.
pass 키워드로 아무 일도 하지 않기
조건문에서는 상황에 따라 어떠한 명령문도 수행하지 않고 그냥 넘어가야할 경우가 생길 수 있습니다.
다른 프로그래밍 언어에서는 이와 같은 경우 조건문 내부에 아무런 명령문도 명시하지 않으면 되지만, 파이썬에서는 조건문 내부에 명령문이 하나라도 존재하지 않으면 에러가 발생합니다.
따라서 파이썬에서는 이런 경우 사용할 수 있도록 pass라는 키워드를 별도로 제공하고 있습니다. pass 키워드는 다른 어떤 동작도 수행하지 않습니다.
다음 예제는 온도가 26도 미만이면 아무런 동작도 수행하지 않지만, 26도 이상이면 특정 문자열을 출력하는 예제입니다.
실행 결과
위의 예제에서 4번 라인의 pass 문을 삭제하면 IndentationError 에러가 발생하는 것을 확인할 수 있습니다.
물론 위와 같은 예제는 다음과 같이 하나의 if 문을 사용해서 작성하는 것이 훨씬 더 효과적이지만 pass 키워드의 이해를 돕기 위해 작성된 예제로만 이해하시길 부탁드립니다.
예제
temp = 18
if temp > 26:
print("에어컨을 켠다.")