조건문은 특정 조건일 때 코드를 싱행하는 문법이다. 다양한 상황에 대처할 때 사용하게 된다.
📎 참고) 의사 코드
의사코드(pseudo code) : 실제 프로그래밍 언어가 아닌 사람의 언어로 프로그래밍 언어를 표현한 것. 보통 특정 프로그래밍 언어를 사용하지 않고 알고리즘이나 컴퓨터 명령을 기술할 때 사용x = 10 # 파이썬 코드 변수 x에 10 할당 # 한글로 표현한 의사 코드
if
조건문은 if
에 조건문을 지정하고 콜론(:
)을 붙인 후 다음 줄에 실행할 코드가 온다. 이때 실행할 코드는 반드시 들여쓰기를 해야 한다.
if 조건식:
코드
IDLE의 파이썬 셸에서는 자동으로 들여쓰기가 되지만 콘솔(터미널, 명령 프롬프트)에서 실행한 파이썬 셸에서는 자동으로 들여쓰기가 되지 않는다.
if X == 10: # 변수 x에 10을 할당한 뒤 if조건문으로 10과 같은지 검사한다.
print('10입니다.') # 10과 같다면 print가 실행된다.
들여쓰기를 한 뒤 조건실이 만족할 때 실행할 코드를 넣는다. 특히 이 조건식이 만족할 때 실행할 코드를 if
본문(if body)이라고 부른다.
보통 if
의 조건식이 만족하면 참(True
), 만족하지 않으면 거짓(False
)이라고 부른다.
=
을 2개 붙여서 ==
로 사용해야 한다. 만약 if
에 =
을 사용하면 문법 에러(SyntaxError
)가 발생한다.=
의 경우 할당한다는 의미로 사용하고 있다.)>>> 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
if x == 10:
pass # TODO: x가 10일 때 처리가 필요함
if
다음 줄에 pass
라는 키워드를 넣는다. 여기서 pass
는 아무 일도 하지 않고 그냥 넘어간다는 뜻이다. 아무 코드도 넣지 않으면 에러가 발생하므로 if
조건문의 형태를 유지하기 위해 사용한다. pass
는 나중에 작성해야 할 코드를 표시할 때 사용할 수 있다.
📎 참고) TODO
TODO는 해야 할 일이라는 뜻인데 보통 주석에 넣는다. 이렇게 넣어두면 검색으로 쉽게 찾을 수 있다. 주석에 TODO 외에도 FIXME, BUG, NOTE 등과 같이 같은 코드는 아니지만 일관된 주석을 사용한다.
파이썬에서는 들여쓰기도 문법으로 정해져 있으며 if
조건문에서도 중요하다.
x = 10
if x == 10:
print('x에 들어있는 숫자는')
print('10입니다.') # unexpected indent 에러 발생
if
다음에 오는 코드들은 반드시 들여쓰기 깊이가 같아야 한다.
<오류 예제1>
x = 10
if x == 10:
print('x에 들어있는 숫자는')
print ('10입니다.')
# 출력 결과
x에 들어있는 숫자는
10입니다.
print
두 개가 모두 실행
<오류 예제2>
x = 5 # x에 5를 할당
if x == 10: # x가 5라서 조건식을 만족하지 않음
print('x에 들어있는 숫자는')
print ('10입니다.')
# 출력 결과
10입니다.
if조건식을 만족하지 않아 두 번째 print
가 출력된다.
(x가 5일 때는 '10입니다.'
가 출력되지 않아야 하는데 출력됨)
이러한 코드는 일단 실행이 되기 때문에 잘못된 부분을 찾기가 쉽지 않다.
파이썬에서 :
가 나오면 그 다음 줄부터는 무조건 들여쓰기를 한다는 점을 기억하도록 한다.
📎 참고) if와 들여쓰기 칸수
if
에서 처음부터 들여쓰기를 4탄으로 했다면 계속 4칸으로 유지, 2칸으로 했다면 2칸으로 유지해야 한다.
들여쓰기 칸 수 자체는 문법으로 정해져 있지 않고 들여쓰기 깊이로만 판단한다. 하지만 PEP8(파이썬 코딩 스타일 가이드)에서는 공백 4칸으로 규정하고 있으므로 4칸을 권장한다.
x = 15
if x >= 10:
print('10 이상입니다.')
if x == 15: # 들여쓰기 주의
print('15입니다.')
if x == 20: # 들여쓰기 주의
print('20입니다.')
# 출력결과
10 이상입니다.
15입니다.
if
안쪽의 if
를 보면 들여쓰기가 되어있다. 이렇게 들여쓰기가 된 if x == 15:
와 if x == 20:
은 처음의 if x >= 10:
에 속한 코드이다.
(즉, if x >= 10:
의 조건식이 만족해야만 실행되는 코드이다.)
x = int(input()) # 입력받은 값을 변수에 저장
if x == 10: # x가 10이면
print('10입니다.') # '10입니다.'를 출력
if x == 20: # x가 20이면
print('20입니다.') # '20입니다.'를 출력
# 실행결과
10 (입력)
10입니다.
다음 소스 코드를 완성하여 x의 값이 10이 아닐 때 'ok'가 출력되게 만드세요.
x = 5
if x != 10 :
print('ok')
# 실행결과
ok
값이 다를 때를 판단하는 비교 연산자 !=
사용
만약 객체를 비교해야 한다면 is
, is not
연산자를 사용하면 된다.