티스토리 뷰
#12 파이썬 chapter 12. if문
if문을 배워보기전 다음과 같은 상상을 해보자.
돈이 있으면 택시를 타고, 돈이 없으면 걸어간다.
위와 같은 상황은 모두에게 일어날 수 있는 상황이다. 프로그래밍도 사람이 하는 것이라 위 문장처럼 주어진 조건을 판단한 후 그 상황에 맞게 처리해야 할 경우가 생긴다. 이렇든 프로그래밍에서 조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 쓰는 것이 바로 if문이다.
위와 같은 상황을 파이썬에서는 다음과 같이 표현할 수 있다.
money = True
if money:
print("택시를 타고 가라")
else:
print("걸어가라")
택시를 타고 가라
1. if문의 기본 구조
다음은 if와 else를 사용한 조건문의 기본 구조이다.
if 조건문:
수행할 문장1
수행할 문장2
....
else:
수행할 문장A
수행할 문장B
....
조건문을 테스트해서 참이면 if문 바로 다음 문장들을 수행하고, 거짓이면 else문 다음 문장들을 수행하게 된다. 그렇기 때문에 else문은 if문 없이 독립적으로 사용할 수 없다.
* 들여쓰기
if문을 만들 때는 if 조건문: 바로 아래 문장부터 if문에 속하는 모든 문장에 들여쓰기를 해주어야 한다. 파이썬이 아닌 다른 프로그래밍 언어를 사용해 온 사람들은 파이썬에서 '수행할 문장'을 들여쓰기하는것을 무시하는 경우가 많아서 주의해야 한다.
money = True
if money:
print("택시를 타고 가라")
print("타고")
print("가라")
File "<ipython-input-21-a56b45874a04>", line 5
print("가라")
^
IndentationError: unexpected indent
위 예처럼 들여쓰기를 하지 않으면 오류가 뜨는 것을 확인할 수 있다.
그렇다면 들여쓰기를 Spacebar 나 Tab 둘 중에 어떤것으로 하는게 좋을까? 가장 중요한 것은 2가지를 혼용해서 쓰지 말자는 것이다. Spacebar를 쓸거면 항상 Spacebar를 쓰고 Tab를 쓰면 항상 Tab를 사용하자는 것이다. 만약에 혼용해서 쓰게 된다면 오류의 원인이 되니 주의하자!
2. 조건문이란 무엇인가?
if조건문에서 '조건문'이란 참과 거짓을 판단하는 문장을 말한다.
앞에서 살펴본 택시 예제에서 조건문은 money가 된다.
money = True
if money:
money는 True이기 때문에 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 > y 는 참이기 때문에 True 값을 돌려준다.
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 이기 때문에 위 조건문은 참이된다.
* in s, x not in s
다음과 같은 조건문도 제공한다.
영어단어 in의 뜻이 '~ 안에' 라는 것을 생각해보면서 다음 예제를 살펴보자.
1 in [1, 2, 3]
True
1 not in [1, 2, 3]
False
첫 번째 예에는 리스트 [1, 2, 3] 안에 1이 있기 때문에 True 값을 돌려주고, 두 번째 예에는 리스트 [1 ,2 ,3]에 1이 없는가에 대한 조건문이다. 1이 리스트안에 있기 때문에 False 를 돌려준다. 튜플도 위와 같이 적용할 수 있다.
'a' in ('a', 'b', 'c')
True
'j' not in ('a', 'b', 'c')
True
다음 예제에 in 을 적용해 보자.
' 만약 주머니에 돈이 있으면 택시를 타고, 없으면 걸어가라.'
pocket = ['paper', 'cellphone', 'money']
if 'money' in pocket:
print("택시를 타고가라")
else:
print("걸어가라")
택시를 타고가라
pocket 리스느 안에 money 가 있기 때문에 if 문 다음 문장이 수행된다.
3. 다양한 조건을 판단하는 elif
위에서 배웠던 if와 else만으로는 다양한 조건을 판단하기 어렵다. 다음 예를 보더라도 if와 else만으론 조건을 판단하는데 어려움을 겪게 된다.
' 주머니에 돈이 있으면 택시를 타고, 주머니에 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어가라'
위 문장을 보면 조건을 판단하는 부분이 두 군데가 있다. 먼저 주머니에 돈이 있는지를 판단해야 하고 주머니에 돈이 없으면 다시 카드가 있는지 판단해야 한다.
elif 문을 써서 수행해 보자.
pocket = ['paper', 'cellphone']
card = True
if 'money' in pocket:
print("택시를 타고가라")
elif card:
print("택시를 타고가라")
else:
print("걸어가라")
택시를 타고가라
즉 elif는 이전 조건문이 거짓일 때 수행된다. elif는 개수에 제한 없이 사용할 수 있다.
4. 조건부 표현식
다음과 같은 코드를 보자.
if score >= 60:
message = "success"
else:
message = "failure"
위 코드는 스코어가 60 이상일 때 message 에 문자열 success를, 아닐 경우 failure를 대입하는 코드이다.
파이썬의 조건부 표현식을 사용하면 위 코드를 간단하게 만들 수 있다.
message = "success" if score >= 60 else "failure"
조건부 표현식은 가독성에 유리하고 한 줄로 작성할 수 있어 편리하다.
출처 : 점프 투 파이썬
'파이썬의 기초' 카테고리의 다른 글
파이썬의 제어문 ( for 문) (0) | 2021.03.13 |
---|---|
파이썬의 제어문 (while문) (0) | 2021.03.13 |
파이썬의 기초 (자료형의 저장공간, 변수) (0) | 2021.03.11 |
파이썬의 기초(불 자료형) (0) | 2021.03.09 |
파이썬의 기초 ( 집합 자료형) (0) | 2021.03.09 |