본 문서는 03-1 if문 - 점프 투 파이썬 (wikidocs.net)를 보고 개인적 공부를 위해 작성한 글입니다. (사실 거의 복붙 수준이예요. 혼자 공부하는 거 기록하며 쓴 거라..)
프로그램은 선택의 연속이기 때문이다. 당신이 게임 속에서 물건을 구매한다고 생각해보자. 당신이 가진 돈이 2만원인데, 3만원짜리 물건을 구매하려고 하면 프로그램은 '구매 불가'를 말해줘야한다. 이 때 2만원이 필요한 3만원보다 작다는 '판단과 선택'이 필요하다. 그런데 이것을 어떻게 할 수 있을까?
Python은 if문을 통해 이를 수행하게 된다.
위와 같은 상황을 파이썬에는 다음과 같이 표현할 수 있다.
money=20000
if(money>=30000):
print("구매가능")
else:
print("구매불가")
구매불가
money가 30000보다 작기 때문에 else 이후에 있는 구매불가를 출력하게 된다. else는 "그렇지 않으면"을 뜻한다.
이제 if문의 기본 구조에 대해 알아보자.
if문은
if 조건문 :
수행할 문장1
수행할 문장2
...
else:
수행할 문장A
수행할 문장B
...
다음과 같은 형식으로 이루어진다. if문이 참이면 if문 바로 다음 블록(수행할 문장1,2)을 수행하고, if문이 거짓이면 else 이후에 있는 블록(수행할 문장 A,B)이 수행된다. 그러므로 else문은 if문없이 독립적 사용이 불가능하다.
if문을 만들 때는 if문에 속하는 모든 문장에 들여쓰기를 해야한다.
if 조건문:
수행할 문장1
수행할 문장2
수행할 문장3
이렇게 써야하고
if 조건문:
수행할 문장1
수행할 문장2
수행할 문장3
다음과 같이 작성하면 오류가 발생한다. "수행할 문장2"를 들여쓰기하지 않았기 때문이다.
if 조건문:
수행할 문장1
수행할 문장2
수행할 문장3
다음과 같이 들여쓰기의 수준이 달라도 오류가 발생한다.
if 조건문 뒤에는 반드시 콜론(:)이 붙는다. 특별한 의미는 없고, 파이썬의 문법 구조이다. 마치 '사과'를 그냥 '사과'라고 부르는 것처럼 그렇게 정해져있다. while, for, def문에도 콜론(:)이 들어간다. 이를 빠뜨리는 경우가 많으니 주의하자. 적응되면 아주 편리할 것이다.
| 비교연산자 | 설명 |
| 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가 y보다 작거나 같다. |
이제 위 연산자를 활용해보자.
x=3
y=2
print(x>y)
print(x<y)
print(x==y)
print(x!=y)
True
False
False
True
| 연산자 | 설명 |
| x or y | x와 y 둘 중 하나만 참이어도 참이다 |
| x and y | x와 y 모두 참이여야 참이다 |
| not x | x가 거짓이면 참이다 |
다음을 이용해 맨 처음 했던 예제를 수정하여 실행해보자.
돈은 20000원이상 있거나, 쿠폰이 있다면 "구매가능"을 출력하고, 그렇지 않으면 "구매불가"를 출력하자.
money=20000
coupon=True
if money>30000 or coupon :
print("구매가능")
else:
print("구매불가")
구매가능
money>30000은 False이지만, coupon이 True이기 때문에 조건문이 참이 되어서 '구매가능'이 출력된다.
| in | not in |
| x in 리스트 | x not in 리스트 |
| x in 튜플 | x not in 튜플 |
| x in 문자열 | x not in 문자열 |
영어단어 in이 '~안에'라는 것을 생각해보면 다음 예가 쉽게 이해가 될 것이다.
print(1 in [1,2,3])
print(1 not in [1,2,3])
True
False
첫번째 print에서 1이 [1,2,3] 안에 있으므로 True, 두번째 print에서 1이 [1,2,3] 안에 없지 않으므로 False가 출력된다.
앞선 예제에 다시 in을 적용시켜보자
주머니에 돈이나 쿠폰이 있다면 "구매가능", 없다면 "구매불가"를 출력해라
pocket=['paper','money', 'keys']
if 'money' in pocket :
print("구매가능")
else:
print("구매불가")
구매가능
money가 pocket 리스트 안에 있으므로 "구매가능"이 출력된다.
만약 조건문 안에서 아무 일도 하지 않게 설정하고 싶을 때는 비워둬도 되지만 pass를 사용하는 방법이 있다. (비워두기 싫거나 조건을 변경하기 싫을 때 사용하면 되는 것 같다.
money=20000
if money>30000 :
pass
else:
print("구매불가")
다음과 같이 말이다.
if와 else만으로는 다양한 조건을 판단하기 어렵다.
주머니에 돈이 있으면 물건을 사고, 주머니에 돈이 없지만 쿠폰이 있으면 물건을 사고, 둘 다 없으면 구매할 수 없다
이 문장에선 조건을 판단하는 부분이 두 군데 있다. 먼저 주머니에 돈이 있는지, 그 이후에 쿠폰이 있는지 판단해야한다.
if와 else만으로 위 문장을 표현하면 다음과 같다.
pocket=["money", "coupon"]
if "money" in pocket:
print("구매가능")
else:
if "coupon" in pocket:
print("구매가능")
else:
print("구매불가")
구매가능
언뜻 보기에 이해하기 어렵고, 산만하다. 이 복잡함을 해결하기 위해 파이썬은 다중조건문인 elif 기능을 제공한다. 위 코드를 elif를 이용해 다음과 같이 바꿀 수 있다.
pocket=["money", "coupon"]
if "money" in pocket:
print("구매가능")
elif "coupon" in pocket:
print("구매가능")
else:
print("구매불가")
구매가능
elif는 이전 조건문이 거짓일 때 수행된다. if, elif, else를 모두 사용할 때 기본 구조는 다음과 같다.
if 조건문:
수행할 문장1
수행할 문장2
elif 조건문:
수행할 문장1-1
수행할 문장1-2
else:
수행할 문장2-1
수행할 문장2-2
elif는 개수에 제한 없이 사용할 수 있다.
if문은 수행할 문장이 한 줄일 경우 다음과 같이 줄여 쓸 수 있다.
if 조건문 : <참일 때 실행할 문장>
else: <거짓일 때 수행할 문장>
if "money" in pocket: print("구매가능")
else: print("구매불가")
if score>=60:
message="success"
else:
message="failure"
위 코드는 score가 60 이상일 때, message에 "success", 그렇지 않을 경우 "failure"을 저장하는 코드이다.
파이썬의 조건부 표현식(conditional expression)을 사용하면 위 코드를 다음과 같이 간단히 표현할 수 있다.
message = "success" if score>=60 else "failure"
조건부 표현식은 다음과 같이 정의한다.
<조건문이 참일 경우 if 조건문 else 조건문이 거짓인 경우>
조건부 표현식은 가독성이 좋고, 한 줄로 작성 가능해 좋다.
| [Python] 함수 (0) | 2022.05.28 |
|---|---|
| [N141] Vector (0) | 2022.05.26 |
| [Python] [조건, 반복문] if, for, while문 연습문제 (0) | 2022.05.25 |
| [Python] [조건, 반복문] While문 (0) | 2022.05.25 |
| [Python] [조건, 반복문] for문 (0) | 2022.05.25 |