혹시 이프 온리라는 영화를 봤습니까? 파이썬에도 If문이 있는데 물론 영화 이프온리랑 아무 상관도 없습니다. 하지만 파이썬 If문을 정리 하도록 하겠다.
사실 If문은 파이썬 뿐만 아니라 다른 프로그래밍 언어에도 나오는 없어서 안될
프로그래밍 문법이라 생각한다. 왜냐하면 모든 프로그래밍은 해당 조건에 맞는 상황을 판단하여 상황을 수행하는데 바로 If문을 쓰기 때문이다. 좀더 쉽게 얘기하자면 참과 거짓을 판단하는 문장이라 생각해도 된다.
>>> drunk = True >>> if drunk: print("그만 마셔") else: print("더 마셔") 그만 마셔
위와 같이 drunk가 참일 경우를 선정하고 만약 durnk가 참이면 "그만 마셔"를 print 하도록 하고 else 거짓이라면 "더 마셔"를 print 하도록 시킨거다.
사실 if와 else는 거의 한 세트라 보면 된다. if문이 조건문인데 수행할 문장을 먼저 걸어두고 수행을 하다 참이면 그대로 참인 문장이 나오고 거짓이면 else문을 통한 다음 문장이 수행이 된다. 당연한 말이지만 else문은 if문 없이 독립적으로 사용할 수 없다.
- if 조건문 뒤에는 반드시 콜론(:)이 붙어야한다.
- space를 쓰든 tab을 하든 하나로 반드시 통일
- if something: 쓰고 난 이후로 바로 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 or y | x와 y 둘 중에 하나만 참이어도 참이다 |
x and y | x와 y 모두 참이어야 참이다 |
not x | x가 거짓이면 참이다 |
이해 하기 어려울 수 있으니 예시를 하나 남기겠다.
>>> money = 2000 >>> card = True >>> if money >= 3000 or card: print("taxi") else: print("walk") taxi
위 문장을 해석하자면 만약 money가 3000보다 같거나 이상 혹은 카드가 있다면 taxi 혹은 아니면 walk가 나오도록 한거다.
파이썬에서는 다른 언어에서 쉽게 볼수 없는 조건문도 있다.
in | not in |
---|---|
x in 리스트 | x not in 리스트 |
x in 튜플 | x not in 튜플 |
x in 문자열 | x not in 문자열 |
이번꺼 역시 아래 예시를 들겠다.
>>> 1 in [1, 2, 3] ⬅️ 1이 [1, 2, 3] 안에 있는가? True >>> 1 not in [1, 2, 3] ⬅️ 1이 [1, 2, 3] 안에 없는가? False >>> 'a' in ('a', 'b', 'c') True >>> 'j' not in 'python' True
좀더 응용을 해보도록 하겠다
>>> pocket = ['money', 'card', 'cellphone'] >>> if 'money' in pocket: print("taxi") else: print("walk") taxi
pass는 조건문의 참, 거짓의 실행을 아무런 일도 안일어나게 하고 싶을 때가 있다. 아래 예시 ㄲ
>>> pocket = ['paper', 'money', 'cellphone'] >>> if 'money' in pocket: pass else: print('take out card')
위를 해석하자면 주머니에 돈이 있으면 가만히 있고 업승면 카드를 꺼내라
pocket 리스트안에 money가 pass를 수행하고 있어 아무 결과값도 안보여준다.
if와 else만으로 다양한 조건을 판단하기 어렵고 번거로울 때가 있다. 그럴떄 사용하는 조건문이 바로 elif문이다. 아래 예시를 보자
if와 else만 사용할 경우 else: 이후 또 if를 써서 새로운 조건을 걸어야한다. 아래처럼
>>> pocket = ['paper', 'cellphone'] >>> card = True >>> if 'money' in pocket: print("taxi") else: if card: ⬅️ else: 이후 새로운 조건문 if:를 쓴다 print("taxi") else: print("walk") taxi
문법상은 맞지만 갱장히 번거롭고 복잡해진다. 거의 도르마무급 그럼 elif를 써보자
>>> pocket = ['paper', 'cellphone'] >>> card = True >>> if 'money' in pocket: ⬅️ 주머니에 돈이 있으면 print("taxi") elif card: ⬅️ 주머니에 돈이 없고 카드가 있으면 print("taxi") else: ⬅️ 주머니에 돈도 없고 카드도 없으면 print("walk") taxi
이런식으로 쓸수가 있다 elif는 False가 나오면 다음 문장으로 넘어간다 True가 나올때까지 근데 만약에 끝까지 False가 나온다면 마지막 False 문장을 나타낸다.
앞에 썼던 pass를 사용하여 if문 다음에 수행할 문장이 한 줄이고, else문을 다음 문장을 한줄로 정리 하는 방법이 있다!
>>> if 'money' in pocket: pass else: print('take out card')
요거를 아래 처럼 요로케~
>>> pocket = ['paper', 'money', 'cellphone'] >>> if 'money' in pocket: pass else: print('take out card')
if score >= 60: message = "success" else: message = "failure"
위 코드를 해석 해보면 score가 60 이상은 "success"이고 아닐 경우 "failure"가 나온다 이거를 한줄로 줄여보자
message = "success" if score >= 60 else "failure"
조건부 표현식은 아래처럼 정의가 된다.
조건부 표현식은 가독성 좋고 한 줄로 작성할 수 있어서 편하다.