ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 50

    x < 50이라는 조건이 충족했으므로 그 안의 print를 실행 시키는 것을 확인 할 수 있다.

    x = 3
    if x == 3:
    print("x is 3") x is 3

    x가 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 50

    x에 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 50

    Number : 프롬프트가 나오면 숫자를 입력 할 수 있을 것이다. 나는 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 mom

    x가 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인풋을 통에 입력을 받는다. 그 점을 빼면 안에는 다 똑같으니 터미널이라고 재미없다고 생각하지 말고 성실히 연습하기 바란다.

    댓글

f.software engineer @ All Right Reserved