[03-1] Python - if (조건문)

Language/Python 2016.08.01 11:25 posted by TechNote.kr


 코딩에 있어 가장 기본적인 문법 중 하나로 언어 마다 조금씩 사용법이 다르기 때문에 그 사용 방법에 대해 잘 이해하고 있어야 한다. 



  1. if 구문 기본 사용법
  2. 조건 type에 따른 if 구문의 사용
    1. if 구문에서 boolean 조건
    2. if 구문에서 숫자 조건
    3. if 구문에서 문자열 조건
    4. is 와 == 차이
  3. if 구문 관련 error



1. if 구문 기본 사용법



if 조건문1: 실행문1-1 실행문1-2 .... elif 조건문2: 실행문2-1 실행문2-2 .... else: 실행문 3-1 실행문 3-2 ...


주의해야할 점 


if, elif, else 구문 제일 마지막에는 : (콜론)을 붙여주어야 한다.


실행문 작성시에는 들여쓰기(indent)를 꼭 해야한다.



 일상 생활에서의 예와 code로서 if 문을 비교해 보면 다음과 같다.



 사과가 3개 있다면 배를 3개 더 산다.


>>> apple = 3
>>> if apple == 3:
...     pear = 3
...     print("Buy pear 3 more.")
... 
Buy pear 3 more.



 길이 막힌다면 지하철을 탄다.


>>> currentRoad = "Heavy Traffic"
>>> if currentRoad == "Heavy Traffic":
...     print("Take a subway.")
... 
Take a subway.






2. 조건 type에 따른 if 구문의 사용



python 변수에는 type이 있고, 해당 type 별로 if 구문을 사용하는 방법에 대해 알아보고자 한다.


  • if 구문에서 boolean 조건
  • if 구문에서 숫자 조건
  • if 구문에서 문자열 조건



2-1. if 구문에서 boolean 조건


 사실 boolean을 비교할 필요는 없다. boolean 자체가 true, false이기 때문에 비교 없이 if 구문에서 바로 사용 될 수 있기 때문이다. 그러함에도 가독성이나 명시적으로 표현하기 위해 사용하는 경우가 있을 수 있음으로 그 사용법을 살펴보면 다음과 같다.


boolean 비교 구문 예 : 


     if variable == True:

     if variable != True:

     if variable is True:

     if variable is not True:

     if variable:

     if not variable:


>>> a=True
>>> if a == True:
...     print "a is True"
... 
a is True
>>> 

>>> if a is True:
...     print "a is True"
... 
a is True
>>> 

>>> if a:
...     print "a is True"
... 
a is True
>>> 
>>> a=False
>>> if a != True:
...     print "a is False"
...
a is False
>>>

>>> if a is not True:
...     print "a is False"
...
a is False
>>>

>>> if not a:
...     print "a is False"
...
a is False
>>>



2-2. if 구문에서 숫자 조건


 숫자의 비교는 if 문에서 가장 많이 사용하는 조건이 아닐까 한다.


숫자 비교 구문 예


     if variable < 10:

     if variable > 10:

     if variable == 10:

     if variable <= 10:

     if variable >= 10:

     if variable != 10:


[Python - 변수 할당의 개념] 에서도 언급하긴 하였지만 object의 주소 역할을 하는 id를 비교할 때는 "is"를 사용하고, 값을 비교할 때는 "=="를 사용해야 한다. 좀 더 자세한 이해가 필요하다면 [Python - 변수 할당의 개념] 를 읽어보자.




2-3. if 구문에서 문자열 조건


 문자열(String)의 비교는 언어에 따라 사뭇 다르곤 한다. 따라서 python에서 사용되는 문자열의 비교 방법에 대해 잘 알고 다른 언어와 어떤 차이점이 있는지 알고 있어야 사용이 가능하다.


문자열 비교 구문 예 : 


     if variable  == "String":

     if variable  != "String":

     if variable  is "String":

     if variable  is not "String":

     if variable :

     if not variable :

     if variable == "":

     if "String" in variable:

     if "String" not in variable:



아래의 실제 실행 결과를 보면 알겠지만 boolean 비교와 크게 다르지 않다. 다만 단순 boolean 비교와 다른 것으로 인지하고 있어야 할 점이 있는데, 실제 문자열 값으로 어떤 것이라도 가지고 있다면 True로 인식되고, "" 로 아무것도 가지고 있지 않다면 False로 인식된다는 점이다.

>>> a="String"
>>> if a == "String":
...     print "OK"
...
OK
>>>

>>> if a != "String":
...     print "OK"
...
>>>

>>> if a is "String":
...     print "OK"
...
OK
>>>

>>> if a is not "String":
...     print "OK"
...
>>>

>>> if a:
...     print "OK"
...
OK
>>>

>>> if not a:
...     print "OK"
...
>>>
>>> a=""
>>> if a == "":
...     print "OK"
...
OK
>>>

>>> if a:
...     print "OK"
...
>>>

>>> if not a:
...     print "OK"
...
OK
>>>
>>> a = "abcdefghijklmn"
>>> if "bcd" in a:
...     print "OK"
...
OK
>>> if "xyz" in a:
...     print "OK"
... else:
...     print "NOK"
...
NOK
>>>



2-4. is 와 == 의 차이


 앞서 언급한 조건문을 보면 is 로 그 동일함을 확인하는 경우가 있고, == 로 동일함을 확인하는 경우가 있었다. 그 차이는 다음과 같다.


is : 해당 object 의 값 뿐만 아니라 identity (memory address) 까지 같은지 확인

== : 해당 object 의 값이 같은지만 확인


>>> a = "String"
>>> b = "String"
>>> if a == b:
...     print("OK")
...
OK
>>> if a is b:
...     print("OK")
...
OK
>>> id(a)
140040905899872
>>> id(b)
140040905899872
>>> if a == b:
...     print("OK")
...
OK
>>> if a is b:
...     print("OK")
...
>>> id(a)
140040905899872
>>> id(b)
140040905899968


위와 같이 변수 a와 b에 같은 값을 넣었다고 하더라도 해당 변수가 저장된 memory address (identity) 가 같을 수도 있고, 다를 수도 있다. 따라서 단순히 값만 비교하는 경우라면 "==" 를 사용해서 비교해야 한다. 




3. if 구문 관련 Error



SyntaxError: invalid syntax


발생 case 1> 비교 연산자가 아닌 할당을 하였을 경우

>>> if a = "test"
  File "", line 1
    if a = "test"
         ^
SyntaxError: invalid syntax
>>> 

발생 case 2> if / elif / else 구문 라인 끝에 : (콜론)을 누락하였을 경우

>>> if a == "test"
  File "", line 1
    if a == "test"
                 ^
SyntaxError: invalid syntax
>>>