지난 18회 파이썬 포스팅에 이어 파이썬 조건문 두번째 시간을 가져보겠습니다
조건문에서 아무것도 하지 않게 설정하기
조건문을 참이나 거짓에 따라 실행하도록 정의 하다 보면 어떤 경우에는 아무것도 하지 않게 설정해야 하는 경우도 생길 수 있습니다.
다음 예를 보면
“주머니에 돈이 있으면 가만히 있고, 주머니에 돈이 없으면 카드를 꺼내라”
위처럼 가만히 있어야 하는 경우를 표현하기 위해서 사용하는 것이 pass 명령입니다
>>> pocket = ['paper', 'phone', 'money']
>>> if 'money' in pocket:
... pass
... else:
... print("카드를 꺼내세요")
...
>>>
위 코드를 보면 pocket 리스트 안에 money 라는 문자열이 있기 때문에 if 의 다음 문장인 pass 가 수행되지만 아무것도 보여주지 않습니다.
다양한 조건 판단을 위한 elif
if 와 else 만을 사용한다면 단순 이거 아니면 저거 라는 식으로 조건에 한계가 발생합니다. 다양한 조건 판단을 하려는데 if 와 else 만 사용한다면 조건문 자체가 상당히 길어질 수 밖에 없습니다.
“주머니에 현금이 있으면 택시를 타고, 주머니에 현금은 없지만 카드가 있다면 택시를 타고, 현금도 없고 카드도 없다면 걸어 가세요.”
위 예문을 보면 조건을 판단하는 부분이 두 군데 입니다. 현금이 있는지 판단을 하고 주머니에 현금이 없지만 카드가 있는지 판단을 해야 합니다.
위 예문을 if 와 else 만으로 구현하면 다음처럼 할 수 있을 겁니다
>>> pocket = ['paper', 'phone']
>>> card = True
>>> if 'money' in pocket:
... print("택시를 타고 가세요")
... else:
... if card:
... print("택시를 타고 가세요")
... else:
... print("그냥 걸어 가세요")
...
택시를 타고 가세요
if 문 안에 else 가 있고 그 아래에 또 다시 if ~ else 문을 쓰게 됩니다.
이런 산만하고 복잡한 느낌의 if ~ else 문을 해결하기 위해 elif 라는 것이 파이썬에는 존재합니다.
elif 를 사용하여 위의 코드를 변경해 보겠습니다.
>>> pocket = ['paper', 'phone']
>>> card = True
>>> if 'money' in pocket:
... print("택시를 타고 가세요")
... elif card:
... print("택시를 타고 가세요")
... else:
... print("그냥 걸어 가세요")
...
택시를 타고 가세요
위의 새로 생성한 코드 처럼 elif 는 이전 조건문이 거짓일 경우 수행됩니다.
if, elif, else 를 모두 사용한다면 아래 구조처럼 됩니다
if 조건문 1:
수행할 문장 1
수행할 문장 2
...
elif 조건문 2
수행할 문장 1
수행할 문장 2
...
elif 조건문 2
수행할 문장 1
수행할 문장 2
...
...
else:
수행할 문장 1
수행할 문장 2
...
if 조건문에서 elif 는 개수에 제한없이 사용이 가능합니다.
if 조건문 한 줄로 작성하기
이전에 작성했던 pass 명령을 사용한 예를 보면 if 문 다음에 한 줄의 문장이 수행이 되고, else 문 다음에도 한 줄의 문장만 수행이 됩니다
>>> if 'money' in pocket:
... pass
... else:
... print("카드를 꺼내세요")
이런 경우에는 조금 더 코드를 간단하게 만들 수가 있습니다.
>>> pocket = ['paper', 'phone', 'money']
>>> if 'money' in pocket: pass
... else: print("카드를 꺼내세요")
...
원래 if 문에서는 한 줄 하고 다음 줄 pass, 그리고 다음 줄 else 하고 다음 한 줄 문장을 작성했다면 수정한 코드에서는 if 문 콜론(:) 뒤 수행할 문장 적은 거 한 줄, else 문 콜론(:) 뒤에 수행할 문장 적은 거 한 줄 로 두줄의 문장으로 코드가 종료가 되었습니다.
조건부 표현식
>>> if jumsoo >= 70:
... m = "success"
... else:
... m = 'failure"
위의 코드는 jumsoo 가 70 점 이상일 경우 m 이라는 변수에 success 라는 문자열을 입력하고 아닐 경우에는 failure 라는 문자열을 입력하는 코드입니다.
위 코드를 파이썬 조건부 표현식(conditional expression)을 사용해서 다음 처럼 간단하게 변경할 수 있습니다.
>>> m = "success" if jumsoo >= 70 else "failure"
조건부 표현식 은 다음처럼 정의 할 수 있습니다
변수 = 조건문이_참일_경우의_값 if 조건문 else 조건문이_거짓일_경우의_값
이처럼 조건부 표현식은 가독성이 유리하고 한 줄로 작성 할 수 있어서 활용성이 좋습니다.
- 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
