..

Search

10) 조건문

조건문


조건문(conditional statements)

다음 그림은 ‘달면 삼키고 쓰면 뱉는다.’는 속담을 순서도(flow chart)로 작성해 본 것입니다.

 

if

 

순서도에 따르면 조건인 맛(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 문과 함께 사용해야 합니다.

 

다음 예제는 앞서 살펴본 순서도를 그대로 파이썬으로 구현해 본 예제입니다.

예제

con = "sweet"  

 

if con == "sweet":

    print("삼키다")

else:

    print("뱉는다")

코딩연습 ▶

실행 결과

삼키다


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도 이상이면 특정 문자열을 출력하는 예제입니다.

예제

temp = 18  

 

if temp < 26:

    pass

else:

    print("에어컨을 켠다.")

코딩연습 ▶

실행 결과

 

 

위의 예제에서 4번 라인의 pass 문을 삭제하면 IndentationError 에러가 발생하는 것을 확인할 수 있습니다.

 

물론 위와 같은 예제는 다음과 같이 하나의 if 문을 사용해서 작성하는 것이 훨씬 더 효과적이지만 pass 키워드의 이해를 돕기 위해 작성된 예제로만 이해하시길 부탁드립니다.

예제

temp = 18  

 

if temp > 26:

    print("에어컨을 켠다.")


연습문제