if
조건문은 분기(branch)를 위한 문법이다. 분기는 "둘 이상으로 갈라지다"라는 뜻으로 프로그램의 흐름을 둘 이상으로 나누는 것을 말한다.
if
에 else
를 사용하면 조건식이 만족할 때와 만족하지 않을 때 각각 다른 코드를 실행할 수 있다. 즉, 프로그램이 두 방향으로 분기하는 것이다.
else
는 if
조건문 뒤에 오며 단독으로 사용할 수 없다. if
와 마찬가지로 콜론(:
)을 붙이며 다음 줄에 실행할 코드가 온다.
if 조건식:
코드1
else:
코드2
else
는 if
의 조건식이 만족하지 않을 때 코드를 실행한다.
>>> x = 5
>>> if x == 10: # 조건을 만족하지 않는다.
print('10입니다.')
else:
print('10이 아닙니다.') # else의 print가 출력된다
10이 아닙니다.
<📎 참고) 변수에 값 할당을 if
, else
로 축약하기
>>> x = 5
>>> if x == 10:
... y = x
... else:
... y = 0
...
>>> y
0
if
, else
에서 변수에 값을 할당할 때는 변수 = 값 if조건문 else 값
형식으로 축약할 수 있으며 이런 문법을 조건부 표현식(conditional expression)이라고 부른다.
>>> x = 5
>>> y = x if x == 10 else 0
>>> y
0
else
와 if
와 들여쓰기 규칙이 같다.
else
도 코드가 여러 줄일 때는 들여쓰기 깊이가 같게 만들어 주어야 한다.
if x == 10:
print('10입니다.')
else:
print('x에 들어있는 숫자는')
print('10이 아닙니다.')
조건식이 아닌 값으로 if와 else의 코드를 동작시켜본다.
if True:
print('참') # True는 참
else:
print('거짓')
if False:
print('참')
else:
print('거짓') # False는 거짓
if None:
print('참')
else:
print('거짓') # None은 거짓
# 실행결과
참
거짓
거짓
True
는 if
의 코드가, False
는 else
의 코드가 실행된다.
특히 None
은 False
로 취급되므로 else
의 코드가 실행된다.
숫자는 정수, 실수와 관계없이 0이면 거짓, 0이 아닌 수는 참이다.
if 0:
print('참')
else:
print('거짓') # 0은 거짓
if 1:
print('참') # 1은 참
else:
print('거짓')
if 0x1F: # 16진수
print('참') # 0x1F는 참
else:
print('거짓')
if 0b1000: # 2진수
print('참') # 0b1000은 참
else:
print('거짓')
if 13.5: # 실수
print('참') # 13.5는 참
else:
print('거짓')
# 실행결과
거짓
참
참
참
참
문자열은 내용이 있을 때 참, 빈 문자열은 거짓이다.
if 'Hello': # 문자열
print('참') # 문자열은 참
else:
print('거짓')
if '': # 빈 문자열
print('참')
else:
print('거짓') # 빈 문자열은 거짓
# 실행결과
참
거짓
📎 참고) 0, None, 빈 문자열을 not으로 뒤집으면?
0, None, 빈 문자열을 not으로 뒤집으면 참(Ture
)이 되므로 if를 동작시킬 수 있다.if not 0: print('참') # not 0은 참 if not None: print('참') # None은 참 if not '': print('참') # not 빈 문자열은 참 # 실행결과 참 참 참
📎 참고) True, False로 취급하는 것들
None, False
0인 숫자들 : 0, 0.0, 0j
비어 있는 문자열, 리스트, 튜플, 딕셔너리, 세트: '', "", [], (), {}, set()
클래스 인스턴스의 __bool__(), __len__() 메서드가 0 또는 False를 반환할 때
if
조건문에는 논리 연산자를 사용하여 조건식을 여러 개 지정할 수 있다.
x = 10
y = 20
if x == 10 and y == 20: # x가 10이면서 y가 20일 때
print('참')
else:
print('거짓')
# 실행결과
참
만약 둘 중 하나라도 만족했을 때 참
이 출력되도록 하려면 or
논리 연산자를 사용하면 된다.
보통 여러 조건을 판단할 때 if를 계속 나열해서 충접if조건문으로 만드는 경우가 많다. 논리 연산자를 사용하면 조건식을 더 간단하게 만들 수 있다.
if x > 0 and x < 20:
print('20보다 작은 양수입니다.')
# 더 간단히
if 0 < x < 20:
print('20보다 작은 양수입니다.')
A 기업의 입사 시험은 필기 시험 점수가 80점 이상이면서 코딩 시험을 통과해야 합격이라고 정했습니다(코딩 시험 통과 여부는 True
, False
로 구분). 다음 소스 코드를 완성하여 '합격'
, '불합격'
이 출력되게 만드세요.
written_test = 75
coding_test = True
if written_test >= 80 and coding_test == True:
print('합격')
else:
print('불합격')
# 출력결과
불합격
합격 조건 : 필기시험 점수가 80점 이상이면서 코딩 시험을 통과 -> 두 조건을 모두 만족
따라서 if
조건문에 written_test >= 80
과 coding_test == True
를 and
연산자로 연결한다.