Media Log

1. 조건문(Condition Statements)


이번에는 조건문(Condition Statements)에 대해서 알아보도록 하겠습니다. 조건문이란 말 그대로 조건의 결과에 따라서 실행되는 문장이 결정됩니다. 파이썬에서의 조건문은 바로 if문으로, 이 if문을 사용하면 조건식이 참(True)이냐 거짓(False)이냐에 따라 실행되는 문장을 다르게 만들 수 있습니다. 우선은 if문의 구조부터 보도록 하겠습니다.

if 조건식:
   문장

위의 구조를 보시면, 조건식이 참(True)과 거짓(False)으로 나뉘는데 주로 논리 연산자나 산술 연산자 등이 많이 쓰입니다. 예를 들어서, '만약에 변수 a의 값이 5보다 클 경우~'라는 조건을 만들어주고 싶으시면 'if a > 5:'라고 써주시면 됩니다. 주의하실 점은, 조건식 뒤에 반드시 콜론(:)을 빼먹지 않고 적어주어야만 합니다. 파이썬은 괄호로 묶는 다른 언어와는 다르게, 들여쓰기로 영역을 구분합니다.


이 if문을 더 간단하게 설명하자면, 실생활에서 내일 친구의 집에 놀러가려고 하는데 만약 비가 온다면 놀러가지 못하는 것을 예로 들어보겠습니다. 이를 if문으로 표현하면 아래와 같을 것입니다.

if 내일 비가 온다:
   집에서 잠이나 잔다

더 쉽게 그림으로 이를 표현한다면 아래와 같을 것입니다.

<순서도(Flow Chart)를 통한 예>


위 순서도를 보았을 때, 내일 비가 온다는게 조건으로 주어지면 비가 왔을때 집에서 잠을 자고, 비가 오지 않았을때는 조건에 해당하는 문장이 실행되지 않기 때문에 집에서 잠을 자지 않습니다. 이번에는 조건문에 대한 이해를 위하여, 직접 if문 이용하여 코드를 작성해보도록 하겠습니다.

>>> money = 1000
>>> if money >= 500:
	print("돈이 500원 이상 있습니다.")
돈이 500원 이상 있습니다.

위 코드를 보시면 변수 money가 1000이란 값을 지니며, 아래에 조건문으로 '만약에 변수 money의 값이 500 이상일 경우'에 '돈이 500원 이상 있습니다.'라는 문장을 출력하도록 했습니다. 만약, money의 값이 500 미만이였다면 조건식이 거짓이 되어 돈이 500원 이상 있다는 문장은 출력되지 않습니다. 이번에는, 조건에 해당하지 않을 경우에도 문장을 출력해보도록 해볼까요?


2. else문


방금 예제에서 if문만으로 무언가 부족하다는 느낌이 들죠? 파이썬에서는 어떠한 조건에 해당하지 않는 경우에 대해서 처리를 할 수 있도록 'else'문이라는 것이 존재합니다. 우선은 if~else문의 구조를 보도록 합시다.

if 조건식:
   문장
else:
   문장

위의 구조에서 만약에 조건식이 참일 경우에는 if문 아래의 문장이 실행되고, 그 외의 경우는 else문 아래의 문장이 실행됩니다. 참고로 else문은 if문에 종속적이며, else문 홀로 쓰일 수 없습니다. 이어서 if~else문도 동일하게 순서도로 예를 들어보도록 하겠습니다.

<순서도(Flow Chart)를 통한 예>


위 순서도에서는 이번에는 비가 올 경우에는 '집에서 잠이나 잔다'가 실행되고, 비가 오지 않을 경우에는 '밖으로 놀러 나간다'가 실행됩니다. else문이 어떤 녀석인지 이해하셨나요? 이해가 그래도 잘 되지 않는다면, 아까 보았던 예제에서 else문을 덧붙여 코드를 수정하고 결과를 확인해보도록 합시다.

>>> money = 430
>>> if money >= 500:
	print("돈이 500원 이상 있습니다.")
else:
	print("돈이 500원 미만입니다.")
돈이 500원 미만입니다.

위 코드에서는 변수 money의 값이 430이니 500보다 미만의 값임을 알 수 있습니다. 'money >= 500'이란 조건은 money의 값이 500 이상이여야 성립되는 조건인데 값이 430이므로 거짓이 되어 실행되지 않습니다. 이 때, else문 위에 있는 조건에 해당하지 않으므로 else문 아래의 문장이 실행됩니다. 이렇게 if~else문을 통해서 간단하게 조건 판단을 할 수 있으나 조건이 늘어나면 점점 더 어려워지고 복잡해집니다. 여기서 if문과 else문 사이에 elif문이라는 녀석을 넣어 다양한 조건 판단을 할 수 있게끔 만들 수 있습니다.


3. elif문


파이썬에서 elif문은 한번만 사용할 수 있는 if문과 else문과는 다르게, if문과 else문 사이에 여러번 사용할 수 있습니다. 먼저 elif문의 구조를 살펴보고, 어떠한 녀석인지 같이 살펴보도록 합시다.

if 조건식:
   문장
elif 조건식:
   문장
else:
   문장

위의 구조를 살펴보시면, if문의 조건식의 결과가 거짓일 때 elif문의 조건식을 검사하며 이 조건식마저도 거짓일 때 아무런 조건에도 해당하지 않으므로 else문의 문장이 실행됩니다. if~elif~else문을 순서도로 표현하자면 아래와 같습니다.



<순서도(Flow Chart)를 통한 예>


위 순서도에서는 비가 온다면 집에서 잠을 자고, 비가 오지 않으면 친구가 집에 있는지 확인합니다. 만약에 친구가 집에 있다면 친구 집으로 놀러가고, 없다면 집에서 놉니다. 여기서는 '비가 온다'가 if문에 해당하는 부분이며, '친구가 집에 있다'가 elif문에 해당합니다. elif문에 대해서 이해가 안되시면, 코드를 우선 보고 어떨때 사용하는 녀석인지 감을 잡도록 합시다.

>>> money = 500
>>> if money > 500:
	print("가지고 있는 돈이 500원보다 많습니다.")
elif money == 500:
	print("가지고 있는 돈이 500원입니다.")
else:
	print("가지고 있는 돈이 500원보다 적습니다.")
가지고 있는 돈이 500원입니다.

위 코드에서는, 먼저 money의 값이 500보다 큰지 검사합니다. 변수 money의 값은 500이므로, 500보다 크지않아 elif문으로 넘어갑니다. elif문에서는 money의 값이 500과 같은지 검사하는데, money의 값과 500이 서로 같으므로 '가지고 있는 돈이 500원입니다.' 라는 문장을 출력합니다. 그리고 마지막의 else문은 하나라도 조건이 해당하는게 있으므로 실행되지 않습니다. 간단하죠? 참고로 파이썬은 블록을 들여쓰기로 구분하므로, 들여쓰기가 잘못된 경우에는 에러가 발생할 수 있으니 주의하세요.

저작자 표시 비영리 변경 금지
신고
  1. soo at 2013.09.25 04:08 신고 [edit/del]

    엑시노아님이 올리신 포스팅 처음부터 끝까지 다 따라했어요. 계속 올려주세요!! ㅋㅋㅋ

    Reply
  2. 한낱오랑우탄 at 2013.09.25 09:51 신고 [edit/del]

    강의를 따라가다보니 설명도 훌륭하여 쉽게 배울 수 있었습니다. 좋은 글 감사드리오며!

    앞으로의 강의도 기대하고 있습니다. *^^*

    Reply
  3. 퓽퓽2 at 2013.10.01 00:06 신고 [edit/del]

    강좌가 너무 알아듣기 쉽고 좋네요
    빨리 for 구문과 구구단 만드는 법을 알고싶어요
    기대할게요~

    Reply
  4. ZiNee at 2013.10.03 00:32 신고 [edit/del]

    엑시노아님의 강의 훌륭합니다. 명강의 감사합니다. 그리고 시험 잘 보세요~

    Reply
  5. 파이서니 at 2013.10.18 10:02 신고 [edit/del]

    >>> money = 500
    >>> if money > 500:
    ... print("가지고 있는 돈이 500원보다 많습니다.")
    IndentationError : expected an indented block

    이렇게 나와요 어떻게 해야 에러가 안뜰까요

    Reply
  6. 파있선 at 2014.01.02 17:40 신고 [edit/del]

    정말 잘보고 있습니다. 설명이 쉬워서 배우는 재미가 있네요

    Reply
  7. 난아로요 at 2014.03.13 12:59 신고 [edit/del]

    아 정말 쉽게 설명 하시는듯. 그리고 예제가 참 재밌네요 ^^;;
    잘 보고 갑니다!.

    Reply
  8. 루팡 at 2014.05.22 14:00 신고 [edit/del]

    좋은 너무 감사드립니다.^^

    Reply
  9. 코난 at 2014.12.30 17:07 신고 [edit/del]

    이번에 보게되었는데 if menoy > 500:...print() 이거 까진했는데 에러뜨네여.. 그리구 elif부분은 아에 쓰질 못하겠어요 어떤 다른 키가 있는건가요???

    Reply
  10. BlogIcon 고고 at 2015.03.29 10:56 신고 [edit/del]

    elif문이라니..파이썬은 참 재밌는게 많네요

    Reply
  11. kshell at 2015.04.08 14:36 신고 [edit/del]

    감사합니다 참 유익하네요~
    열심히 따라 가렵니다

    Reply
  12. park at 2015.04.10 03:19 신고 [edit/del]

    C언어 조건문은 이해는 해도 다 까먹었는데..엑시노아님 강좌는 기억에 오래 남을거 같애요.^^

    Reply
  13. da at 2016.02.06 10:27 신고 [edit/del]

    >>> money = 500
    >>> if money > 500:
    print("가지고 있는돈이 500원 보다 많습니다.")


    >>> elif money == 500:

    SyntaxError: invalid syntax
    이런 에러가 뜨네요 들여쓰기 문제인가요

    Reply
    • BlogIcon EXYNOA at 2016.02.13 02:48 신고 [edit/del]

      들여쓰기의 문제이기 전에 if와 elif는 한 세트와 다름이 없습니다. 따로 분리하여 작성을 하시면 그러한 구문 오류가 발생하실 수 있습니다.

  14. ㅇㅅㅇ at 2017.04.08 00:57 신고 [edit/del]

    if money >= 500:
    ... print("돈이 500원 이상 있습니다.")
    File "<stdin>", line 2
    print("돈이 500원 이상 있습니다.")

    이건 왜 이러는지 아무리 봐도 모르겠습니다...

    Reply
    • ㅇㅅㅇ at 2017.04.08 01:00 신고 [edit/del]

      if money >= 500:
      ... print ("돈이 500원 이상 있습니다.")
      ...
      돈이 500원 이상 있습니다.

      print 앞에 띄어쓰기를 넣으면 되는 군요. 왜 이러는 건가요?

    • ㅇㅅㅇ at 2017.04.08 01:41 신고 [edit/del]

      들여쓰기 때문이군요.. space bar 또는 tab 키를 사용하면 되는 군요. 하지만 들여쓰기를 하고 엔터를 누를때 바로 값이 안나오고 한줄 더 나오는건 뭔가요?

  15. ㅇㅅㅇ at 2017.04.09 17:00 신고 [edit/del]

    강의를 보고 문제를 푸는 도중에 문제가 발생했습니다...

    문제는 이겁니다.

    코드의 출력값을 찾으시오.
    If not True:
    print("1")
    elif not (1 + 1 == 3):
    print("2")
    else:
    print("3")

    정답이 2 라고 하는데 왜 그러는지 도통 이해가 안갑니다. 설명도 없고... 부탁드립니다. 선생님.

    Reply
    • ㅇㅅㅇ at 2017.04.09 17:03 신고 [edit/del]

      댓글에서는 들여쓰기가 않되기 때문에 다시 들여쓰기 대신에 _ 를 넣겠습니다.

      if note True:
      _print("1")
      elif not (1 + 1 == 3):
      _print("2")
      else:
      _print("3")

    • BlogIcon EXYNOA at 2017.04.29 20:21 신고 [edit/del]

      우선 논리 연산에서 참의 부정은 거짓이기 때문에 당연히 첫번째 조건문은 지나가게 됩니다. 그런데, 두번째 조건문에서 '(1 + 1 == 3)을 부정한 것이 참인가?'를 묻고 있습니다.

      1 + 1 == 3의 결과는 물론 거짓이나, 여기서 부정을 하여 참이 되는 것입니다. 조건식의 최종적인 결과가 참이되므로 당연하게도 "2"가 출력되게 됩니다.

submit

티스토리 툴바