파이썬

11. 조건문 if문

미스터 한뺑 2022. 7. 29. 14:31
반응형

1. if문의 기본 구조

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

조건문을 테스트해서 참이면 if문 바로 다음 문장(if 블록)들을 수행하고, 조건문이 거짓이면 else문 다음 문장(else 블록)들을 수행하게 된다. 그러므로 else문은 if문 없이 독립적으로 사용할 수 없다.

 

비교연산자

이번에는 조건문에 비교연산자(<, >, ==, !=, >=, <=)를 쓰는 방법에 대해 알아보자.

다음 표는 비교 연산자를 잘 설명해 준다.

비교연산자설명

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는 같지 않다. 따라서 위 조건문은 거짓이다.

>>> x != y
True

x와 y는 같지 않다. 따라서 위 조건문은 참이다.

앞에서 살펴본 택시 예제를 다음처럼 바꾸려면 어떻게 해야 할까?

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

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

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

money >= 3000 조건문이 거짓이 되기 때문에 else문 다음 문장을 수행하게 된다.

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문에 속한 "택시를 타고 가라" 문장이 출력된다.

in, not in

더 나아가 파이썬은 다른 프로그래밍 언어에서 쉽게 볼 수 없는 재미있는 조건문을 제공한다.

바로 다음과 같은 것들이다.

innot 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문에 속한 문장이 수행된다.

 

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

즉 elif는 이전 조건문이 거짓일 때 수행된다. if, elif, else를 모두 사용할 때 기본 구조는 다음과 같다.

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

위에서 볼 수 있듯이 elif는 개수에 제한 없이 사용할 수 있다.

 

3. 조건부 표현식

다음과 같은 코드를 보자.

if score >= 60:
    message = "success"
else:
    message = "failure"

위 코드는 score가 60 이상일 경우 message에 문자열 "success"를, 아닐 경우에는 "failure"를 대입하는 코드이다.

파이썬의 조건부 표현식(conditional expression)을 사용하면 위 코드를 다음과 같이 간단히 표현할 수 있다.

message = "success" if score >= 60 else "failure"

조건부 표현식은 다음과 같이 정의한다.

변수 = 조건문이_참인_경우의_값 if 조건문 else 조건문이_거짓인_경우의_값

조건부 표현식은 가독성에 유리하고 한 줄로 작성할 수 있어 활용성이 좋다.

반응형