-
7. 파이썬 문법 조건문 (if-else)파이썬(Python) 강의 2019. 2. 11. 09:32
모든 프로그램은 자료형 + (조건문과 반복문)으로 구성된다. 좀 더 넓은 관점으로 보면 모든 프로그램은 자료구조(자료형)과 알고리즘(자료구조를 이용한 조건문+반복문)으로 구성된다.
들어가기전에
이 포스트는 여러분이 파이썬을 설치했고 각자 원하는 IDE를 이용해 파이썬을 개발한다고 가정한다. 대화형(Interactive) 터미널을 사용해도 상관 없다. 혹시 파이썬을 설치하지 않았다면 1.파이썬 설치 및 개발환경 설정 이 포스트에서 파이썬과 파이썬 개발환경을 먼저 셋업하길 바란다. 앞서 말했듯이 반드시 실습 해 보길 바라고 30분 이상 소요하지 말라.
예상 소요 시간 30분 (연습문제 제외)
목표
- 조건문(conditional statement)란?
- if:
- if: else:
- if: elif: else:
- and
- or
조건문(conditional statement)란?
조건문이란 뭘까? 딱 봐도 조건에 따라 무언가를 하거나 안하거나 한다는 뜻 아니겠는가? 실제 세계의 예를 들면 이런 것이다. 저 물건이 3만원 이하이면 사고, 초과면 사지 않겠다. 비슷하게, 파이썬에서 조건문은 조건에 따라 어떤 코드 블락을 실행 시킬 지 말지를 결정하겠다는 뜻이다. 조건문의 구성을 보자.
- 조건문 키워드 : if, else if, else를 이용해 조건문의 존재를 알려준다.
- 조건(condition) : 어떤 조건에서 실행시키겠는가? 예를들면 x > 30일 때 A를 실행시켜라, 그렇지 않으면 B를 실행시켜라, 라고 할 수 있다.
- 코드 블락 : 조건이 맞았을 때, 어떤 코드 블락을 실행시켜야 하는가? 이는 파이썬 자료형 반복문에서 했던 것 과 마찬가지이다.
조건이란 파이썬 자료형 반복문에서 설명했듯이 Boolean형(True 또는 False)의 값을 갖는 구문(statement)를 의미한다. 예를 들어,- 3 > 5
- x < 30
- x > y
- x == 1
등등이 모두 '조건'에 해당되고, 당시의 x, y의 값에 따라 참 거짓의 여부가 결졍된다.코드 블락이란 조건이 맞을 때 실행되는 코드이고, 인덴션(indention)으로 구분 할 수 있다. 인덴션에 관한 이야기는 파이썬 자료형 반복문에서 했던 이야기와 같으므로 참고하길 바란다.if:
x = 30
if x < 50:
print("x is smaller than 50") x is smaller than 50x < 50이라는 조건이 충족했으므로 그 안의 print를 실행 시키는 것을 확인 할 수 있다.
x = 3
if x == 3:
print("x is 3") x is 3x가 3이므로 프린트가 출력되는 것을 볼 수 있다.
if: else:
만약 x < 50이 아닐 때 무언가를 또 실행시키고 싶다면 else를 사용 할 수 있다.
x = 51
if x < 50:
print("x is smaller than 50")
else :
print("x is greater than 50") x is greater than 50x에 51이 들어 있으므로 else구문인 x is greater than 50을 실행 한 것을 확인 할 수 있다.
다음을 실행 해 보자.
x = int(input("Number : ")) # 들어온 인풋(input)을 정수형으로 바꾸라는 뜻 int( .. )
if x < 50:
print("x is smaller than 50")
else :
print("x is greater than 50") Number : 12 x is smaller than 50Number : 프롬프트가 나오면 숫자를 입력 할 수 있을 것이다. 나는 12를 입력했지만 여러분은 다른 숫자를 입력 해 보길 바란다. 그리고 if else구문이 제대로 실행 되는지 확인 해 보길 바란다.
if: elif: else:
만약 조건이 여러개라면 어쩌겠는가? 예를 들어 생각 해 보자. 예를들면, 어떤 물건이 3만원 이하면 산다, 3만원에서 5만원 사이면 엄마에게 돈을 빌려서 산다, 5만원 이상이면 사지 않는다, 같은 것은 어떻게 표현할까? 이는 if, elif, else를 통해 표현 할 수 있다. elif 는 else if 의 줄임말이다.
price = int(input("Price : "))
if price < 30: # 1000단위는 생략했다.
print("buy, price = " + str(price))
elif 30 <= price < 50:
print("borrow money from mom")
else:
print("not buy, price = " + str(price)) Price : 45 borrow money from momx가 30 이상이고 50 미만인 경우는 엄마에게 돈을 빌리자. 라고 출력되는 것을 알 수 있다. 여러번 실행하면서 if, elif, else문을 다 확인 해 보도록 하자. 들여쓰기에 주의하도록 하자, 앞서 말했듯 파이썬에서는 들여쓰기로 코드블락을 구분한다.
만약 이 코드를 게속 실행시키는것이 아닌 그냥 자동을 계속 돌아가게 하고 싶다면 어떻게 해야하는가? 그렇다 반복문을 사용하면 된다.
while True:
price = int(input("Price : "))
if price < 30:
print("buy, price = " + str(price))
elif 30 <= price < 50:
print("borrow money from mom")
else:
print("not buy, price = " + str(price)) Price : 3 buy, price = 3 Price : 20 buy, price = 20 Price : 60 not buy, price = 60 Price : 35 borrow money from mom Price : Traceback (most recent call last): //여기서 종료했음.조건문을 while이 인지하는 코드블락으로 변경해야 하므로 while아래부터 전부 들여쓰기(indention)을 해 while의 안으로 넣었다. 이제 여러분이 임의로 코드를 종료시킬 때 까지 계속 Number :가 나오면서 숫자를 입력 받을 것이다.
and
지금까지는 ==, >, <, <= 등등을 이용해서 하나의 조건을 알아봤었다. 하지만 조건 자체가 여러개인 경우는 어떻게 하는가? 예를들면, 물건이 3만원 보다 싸도 내 통장에 5만원 이상 남아있는경우는 어떻게 표현 할 것인가? 이럴때 and를 사용한다. and는 and 왼쪽 오른쪽 모든 조건이 True여야만 실행된다. 조건을 (조건1) and (조건2) and (조건3) and ... 해서 영원히 이어붙일 수 있다.
price = 20
myAccount = 70
if price < 30 and myAccount > 50:
print("Buy it!") Buy it!if문 내부가 출력되는 것을 확인 할 수 있다. price를 40으로 바꾸고 실행 해 보자. 실행되는가?
or
마찬가지로 or라는 개념이 있다. or는 or의 왼쪽 오른쪽 둘중 하나만 True이면 실행 가능하다. 다음을 보자.
price = 60
myAccount = 70
if price < 30 or myAccount > 50:
print("Buy it!") Buy it!price가 30보다 작지 않아도 if의 내부가 실행된다 myAccount > 50이 True이기 때문이다. 마찬가지로,
price = 20
myAccount = 0
if price < 30 or myAccount > 50:
print("Buy it!") Buy it!or를 사용하면 내 통장에 돈이 0 이라도 price가 30보다 작으므로 실행된다. and와 마찬가지로 (조건1) or (조건2) or..해서 이어붙일 수 있다.
and & or
당연히 and와 or을 섞어 쓸 수 있다. 예를들어 위에처럼 가격이 3만원 보다 작고, 통장에 5만원 이상 있으면 살 수 있다고 치자. 하지만 돈이 얼마있고 값이 얼마고 간에 엄마가 사준다고 말한다면 무조건 살 수 있게 된다. 따라서, (가격이 3만원보다 작다 그리고(and) 통장에 5만원 초과인 경우) 또는(or) (엄마가 사주는경우) 이렇게 and 와 or를 마음껏 섞어 쓸 수 있다.
price = 100
myAccount = 0
momApproved = True
if (price < 30 and myAccount > 50) or momApproved:
print("Buy it!") Buy it!가격이 10만원이고 통장에 한 푼도 없지만 momApproved 즉 엄마가 사라고했으니 만사 OK이다.
끝
이번 포스트에서는 파이썬 문법인 조건문에 대해서 알아보았다. 다음 포스트부터는 다시 자료형으로 돌아가 튜플(Tuple)에 대해서 설명 해 볼 생각이다. 반복문과 조건문을 이용해서 여러가지를 만들어보자.
연습문제
리스트가 기억나는가? 위의 예제를 바탕으로 1이 들어오면 다시 문자열인 과일 이름을 입력을 받아 리스트에 저장하고, 2를 누르면 리스트 안의 내용을 출력하고 3이면 종료하는 프로그램을 만들어 보자.
<연습문제의 프로그램. 그렇다 이 포스트를 위해 직접 만들었다.>
리스트와 리스트 함수들 그리고 반복문 사용법 True, break등등을 기억한다면 가능 할 것이다. 이런 간단한 프로그램들이 가소로워 보일 지 모르지만 실제 세계에서 자주 사용되는 패턴이다. 단지 실제 세계에서는 터미널로 입력을 받지 않고 웹이나 UI인풋을 통에 입력을 받는다. 그 점을 빼면 안에는 다 똑같으니 터미널이라고 재미없다고 생각하지 말고 성실히 연습하기 바란다.
'파이썬(Python) 강의' 카테고리의 다른 글
9. 파이썬 오브젝트 파일 (4) 2019.02.13 8. 파이썬 자료형 튜플 (2) 2019.02.12 6. 파이썬 문법 반복문 (for/while) (3) 2019.02.10 5. (2) 파이썬 자료형 딕셔너리 (6) 2019.02.09 5. (1) 파이썬 자료형 딕셔너리 (0) 2019.02.08 댓글