13.1 if 조건문 사용하기

Unit 13. if 조건문으로 특정 조건일 때 코드 실행하기

조건문은 특정 조건일 때 코드를 실행하는 문법입니다. 프로그램을 만들다 보면 여러 가지 상황을 처리해야 하는 경우가 생기죠. 이때 조건문은 다양한 상황에 대처할 때 사용합니다.

먼저 실생활의 예를 들어보겠습니다. 만약 세탁기에 빨래를 넣고 돌렸다면 다음과 같은 조건문을 만들 수 있겠죠?

if 세탁 완료 소리가 울리면:
    빨래를 꺼내서 말린다.

다음과 같이 날씨에 따라 행동할 수도 있습니다.

if 비가 온다면:
    우산을 가지고 나간다.
 
if 날씨가 춥다면:
    코트를 입고 나간다.
 
if 날씨가 덥다면:
    반소매에 얇은 옷을 입고 나간다.

즉, 조건문을 사용하면 조건에 따라 다른 코드를 실행할 수 있습니다. 이번 유닛부터는 if 조건문의 다양한 사용 방법을 알아보겠습니다.

참고 | 의사 코드

프로그래밍이나 컴퓨터 이론을 공부하다 보면 의사 코드(pseudo code)라는 말을 접하게 됩니다. 의사 코드는 실제 프로그래밍 언어가 아닌 사람의 언어로 프로그래밍 언어를 표현한 것입니다. 보통 특정 프로그래밍 언어를 사용하지 않고 알고리즘이나 컴퓨터 명령을 기술할 때 사용합니다.

x = 10    # 파이썬 코드
변수 x에 10 할당    # 한글로 표현한 의사 코드

앞에서 if 조건문을 설명할 때 "if 비가 온다면", "우산을 가지고 나간다."도 일종의 의사 코드입니다.

13.1 if 조건문 사용하기

if 조건문은 if에 조건식을 지정하고 :(콜론)을 붙이며 다음 줄에 실행할 코드가 옵니다. 이때 실행할 코드는 반드시 들여쓰기를 해야 합니다.

if 조건식:
     코드

먼저 IDLE의 파이썬 셸에서 if 조건문을 사용해보겠습니다.

>>> x = 10
>>> if x == 10:
...      print('10입니다.')
... 
10입니다.

만약 if 다음 줄에서 들여쓰기를 하지 않으면 들여쓰기 에러가 발생합니다. 이 항상 이 부분을 주의해주세요.

>>> x = 10
>>> if x == 10:
... print('10입니다.') 
  File "<stdin>", line 2
    print('10입니다.')
        ^
IndentationError: expected an indented block 

참고로 IDLE의 파이썬 셸에서는 자동으로 들여쓰기가 되지만, 콘솔(터미널, 명령 프롬프트)에서 실행한 파이썬 셸에서는 자동으로 들여쓰기가 되지 않으므로 반드시 들여쓰기를 해줍니다.

13.1.1  if 조건문의 기본 형태와 실행 흐름 알아보기

이제 if 조건문을 자세히 알아보겠습니다. 파이썬에서 if 조건문은 if 조건식: 형식으로 사용하며 그다음 줄에는 들여쓰기를 한 뒤 조건식이 만족할 때 실행할 코드를 넣습니다. 특히 이 조건식이 만족할 때 실행할 코드를 if 본문(if body)이라고 부릅니다.

그림 13-1 if 조건문의 기본 형태

여기서는 변수 x에 10을 할당한 뒤 if 조건문으로 x가 10과 같은지 검사하였습니다. 조건식은 x == 10과 같은 형식으로 지정해주는데 ==은 두 값이 "같을 때"라는 뜻입니다.

즉, if x == 10:x가 10과 같은지 비교한 뒤 같으면 다음에 오는 코드를 실행하라는 뜻이 됩니다. 따라서 x는 10이고 조건식을 만족하므로 그다음 줄의 print가 실행되어 '10입니다.'가 출력됩니다.

if 조건문의 실행 흐름을 그림으로 표현하면 다음과 같은 모양이 됩니다. 코드와 실행 흐름을 비교해보세요.

그림 13-2 if 조건문의 실행 흐름

보통 if의 조건식이 만족하면 참(True), 만족하지 않으면 거짓(False)이라고 부릅니다.

13.1.2  if 조건문을 사용할 때 주의할 점

if 조건문을 사용할 때 주의할 점이 있는데 파이썬에서는 =을 할당으로 사용하고 있으므로 값을 비교할 때는 =을 두 개 붙여서 ==로 사용해야 합니다. 자주 틀리는 부분이니 if 안에서 ==을 사용했는지 반드시 확인하세요. 다음과 같이 if=을 사용하면 문법 에러가 발생합니다.

>>> if x = 10: 
  File "<stdin>", line 1
    if x = 10:
         ^
SyntaxError: invalid syntax 

조건식 끝에 :을 빠뜨리는 실수도 자주하니 :도 확인해주세요. 다음은 조건식 끝에 :을 빠뜨렸을 때의 모습입니다.

>>> if x == 10  
  File "<stdin>", line 1
    if x == 10
             ^
SyntaxError: invalid syntax 

문법 에러가 발생하면 콘솔에서는 잘못된 코드 아래에 ^가 표시되고, IDLE에서는 빨간색으로 표시되므로 자신이 실수한 부분을 쉽게 찾을 수 있습니다.

13.1.3  if 조건문에서 코드를 생략하기

이번에는 if 조건문에 조건식만 작성하고 코드를 생략하는 방법을 알아보겠습니다.

>>> x = 10
>>> if x == 10:
...     pass
...
>>> 

if 다음 줄에 pass라는 특별한 키워드를 넣었습니다. 여기서 pass는 아무 일도 하지 않고 그냥 넘어간다는 뜻입니다. 파이썬에서는 if 다음 줄에 아무 코드도 넣지 않으면 에러가 발생하므로 if 조건문의 형태를 유지하기 위해 pass를 사용합니다.

pass는 아무 일도 하지 않는 코드라서 의미가 없을 것 같지만 나중에 작성해야 할 코드를 표시할 때 사용할 수 있습니다. 즉, 다음과 같이 pass만 넣고 나중에 할 일은 주석으로 남겨놓는 방식입니다.

if x == 10:
    pass    # TODO: x가 10일 때 처리가 필요함
참고 | TODO

TODO는 해야 할 일이라는 뜻인데 보통 주석에 넣습니다. 이렇게 TODO를 넣어 두면 검색으로 쉽게 찾을 수 있죠. 그래서 프로그래머들은 주석에 TODO 이외에도 FIXME, BUG, NOTE 등과 같이 코드는 아니지만 일관된 주석을 사용합니다.