[Python] 기초3. IF문(조건문)

IF 문의 기본 구조

다음은 if와 else를 사용한 조건문의 기본 구조이다.

if 조건문:
    수행할_문장1
    수행할_문장2
    ...
else:
    수행할_문장A
    수행할_문장B
    ...

조건문을 테스트해서 참이면 if 문 아래 문장(if 블록)들을 수행하고

조건문이 거짓이면 else 문 다음 문장(else 블록)들을 수행하게 됩니다.

따라서 else 문은 if 문 없이 독립적으로 사용할 수 없습니다.

 

 

1. 비교 연산자

이번에는 조건문에 비교 연산자(<, >, ==, !=, >=, <=)를

쓰는 방법에 대해 알아보겠습니다..

비교 연산자 설명

비교연산자 설명
x < y x가 y보다 작다.
x > y x가 y보다 크다.
x == y x와 y가 같다.
x != y x와 y가 같지 않다.
x >= y x가 y보다 크거나 같다.
x <= y x가 y보다 작거나 같다.

이제 이 연산자를 어떻게 사용하는지 알아보겠습니다.

>>> x = 3
>>> y = 2
>>> x > y
True
>>>

x에 3, y에 2를 대입한 후 x > y라는 조건문을 수행하면

True를 리턴합니다. x > y 조건문이 참이기 때문이죠.

>>> x < y
False

위 조건문은 거짓이기 때문에 False를 리턴합니다.

>>> x == y
False

x와 y는 같지 않기 때문에 위 조건문은 거짓이므로 False를 리턴합니다.

>>> x != y
True

x와 y는 같지 않습니다. 따라서 위 조건문은 참이므로 True를 리턴합니다.

사용법을 알아봤으므로 이제 응용해 보겠습니다.

 

만약 3000원 이상의 돈을 가지고 있으면 택시를 타고 가고, 그렇지 않으면 걸어가라.

이 상황은 다음처럼 프로그래밍할 수 있습니다.

>>> money = 2000
>>> if money >= 3000:
...     print("택시를 타고 가라")
... else:
...     print("걸어가라")
...
걸어가라
>>>

money >= 3000 조건문이 거짓이 되기 때문에

else 문 다음 문장을 수행하게 됩니다.

 

2. and, or, not

조건을 판단하기 위해 사용하는 다른 연산자로는

and, or, not이 있습니다.

각각의 연산자는 다음처럼 동작합니다.

연산자 설명
x or y x와 y 둘 중 하나만 참이어도 참이다.
x and y x와 y 모두 참이어야 참이다.
not x x가 거짓이면 참이다.

다음 예를 통해 or 연산자의 사용법을 알아보겠습니다.

돈이 3000원 이상 있거나 카드가 있다면 택시를 타고 가고, 그렇지 않으면 걸어가라.
>>> money = 2000
>>> card = True
>>> if money >= 3000 or card:
...     print("택시를 타고 가라")
... else:
...     print("걸어가라")
...
택시를 타고 가라
>>>

money는 2000이지만, card가 True이기 때문에

money >= 3000 or card 조건문이 참이 됩니다.

따라서 if 문에 속한 ‘택시를 타고 가라’ 문장이 출력됩니다.

3. in, not in

파이썬은 다른 프로그래밍 언어에서 쉽게 볼 수 없는

재미있는 조건문도 제공합니다.

바로 다음과 같은 것들이 있습니다.

in not in
x in 리스트 x not in 리스트
x in 튜플 x not in 튜플
x in 문자열 x not in 문자열

영어 단어 in의 뜻이 ‘~안에’라는 것을 생각해 보면

다음 예가 쉽게 이해될 것입니다.

>>> 1 in [1, 2, 3]
True
>>> 1 not in [1, 2, 3]
False

앞에서 첫 번째 예는 ‘[1, 2, 3]이라는 리스트 안에 1이 있는가?’라는 조건문입니다.

1은 [1, 2, 3] 안에 있으므로 참이 되어 True를 리턴합니다.

두 번째 예는 ‘[1, 2, 3] 리스트 안에 1이 없는가?’라는 조건문입니다.

1은 [1, 2, 3] 안에 있으므로 거짓이 되어 False를 리턴합니다.

 

다음은 튜플과 문자열에 in과 not in을 적용한 예 입니다.

각각의 결과가 나온 이유는 쉽게 유추할 수 있습니다.

>>> 'a' in ('a', 'b', 'c')
True
>>> 'j' not in 'python'
True

이번에는 우리가 계속 사용해 온 택시 예제에 in을 적용해 보겠습니다.

만약 주머니에 돈이 있으면 택시를 타고 가고, 없으면 걸어가라.
>>> pocket = ['paper', 'cellphone', 'money']
>>> if 'money' in pocket:
...     print("택시를 타고 가라")
... else:
...     print("걸어가라")
...
택시를 타고 가라
>>>

['paper', 'cellphone', 'money'] 리스트 안에 'money'가 있으므로

 'money' in pocket은 참이 됩니다.

따라서 if 문에 속한 문장이 수행되는겁니다.

4. 다양한 조건을 판단하는 elif

if와 else만으로는 다양한 조건을 판단하기 어렵습니다.

다음 예를 보면 if와 else만으로는

조건을 판단하는데 어려울 것입니다.

주머니에 돈이 있으면 택시를 타고 가고,
주머니에 돈은 없지만 카드가 있으면 택시를 타고 가고,
돈도 없고 카드도 없으면 걸어가라.

위 문장을 보면 조건을 판단하는 부분이 두 군데 있습니다.

먼저 주머니에 돈이 있는지를 판단해야 하고

주머니에 돈이 없으면 다시 카드가 있는지 판단해야 하죠.

if와 else만으로 위 문장을 표현하려면

다음과 같이 할 수 있습니다.

>>> pocket = ['paper', 'handphone']
>>> card = True
>>> if 'money' in pocket:
...     print("택시를 타고가라")
... else:
...     if card:
...         print("택시를 타고가라")
...     else:
...         print("걸어가라")
...
택시를 타고가라
>>>

언뜻 보기에도 이해하기 어렵고 산만한 느낌이 듭니다.

이런 복잡함을 해결하기 위해 파이썬에서는

다중 조건 판단을 가능하게 하는 elif를 사용합니다.

위 예시에 elif를 사용하면 다음과 같이 바꿀 수 있습니다.

>>> pocket = ['paper', 'cellphone']
>>> card = True
>>> if 'money' in pocket:
...      print("택시를 타고가라")
... elif card: 
...      print("택시를 타고가라")
... else:
...      print("걸어가라")
...
택시를 타고가라

즉, elif는 이전 조건문이 거짓일 때 수행됩니다.

if, elif, else를 모두 사용할 때 기본 구조는 다음과 같습니다.

if 조건문:
    수행할_문장1 
    수행할_문장2
    ...
elif 조건문:
    수행할_문장1
    수행할_문장2
    ...
elif 조건문:
    수행할_문장1
    수행할_문장2
    ...
...
else:
   수행할_문장1
   수행할_문장2
   ... 

위에서 볼 수 있듯이 elif는 개수에

제한 없이 사용할 수 있습니다.

IF, elif, else 사용 흐름도

 

-출처 : 점프 투 파이썬