! 지금까지 숫자형, 문자열, 리스트, 튜플, 딕셔너리, 집합 자료형에 대해서 알아보았다.
이번에는 참(True)과 거짓(False)을 나타내는 불(bool) 자료형에 대해서 알아보자.
불 자료형은 다른 자료형과 달리 가질 수 있는 값이 딱 2개뿐이다.
True → 참False → 거짓불 자료형은 앞으로 배울 if, while과 같은 조건문과 반복문에서 매우 중요하게 사용된다.
불(bool) 자료형은 참(True)과 거짓(False)을 나타내는 자료형이다.
True
False
True, False 두 가지뿐이다.여기서 주의할 점이 있다.
True
False
True와 False의 첫 글자는 반드시 대문자로 작성해야 한다.true # 잘못된 표현
false # 잘못된 표현
True # 올바른 표현
False # 올바른 표현
!
True와False는 문자열이 아니라 파이썬에서 미리 정해져 있는 값이다.따라서 따옴표를 사용하지 않는다.
True
False
"True"
"False"
True → bool 자료형
"True" → str 자료형
먼저 변수
a에는True, 변수b에는False를 저장해 보자.
>>> a = True
>>> b = False
True와 False는 따옴표로 감싸지 않았지만 오류가 발생하지 않는다.
type()함수를 사용하면 변수의 자료형을 확인할 수 있다.
>>> type(a)
<class 'bool'>
>>> type(b)
<class 'bool'>
a와 b의 자료형이 모두 bool인 것을 확인할 수 있다.기본 형태는 다음과 같다.
type(값)
type()은 해당 값이 어떤 자료형인지 알려 주는 파이썬의 내장 함수이다.불 자료형은 직접
True,False를 저장해서 사용할 수도 있지만 비교 연산의 결과로도 자주 사용된다.
>>> 1 == 1
True
==는 두 값이 같은지를 비교하는 연산자이다.1 == 1
"1과 1이 같은가?"
True가 된다.>>> 2 > 1
True
2는 1보다 크기 때문에 결과는 참이다.>>> 2 < 1
False
2는 1보다 작지 않기 때문에 결과는 거짓이다.즉, 비교식은 결과로
True또는False를 반환한다.
>>> 10 == 10
True
>>> 10 == 20
False
>>> 10 > 5
True
>>> 10 < 5
False
=와 ==를 헷갈리지 말자파이썬을 처음 공부할 때 자주 헷갈리는 부분이다.
a = 10
=는 변수에 값을 대입하는 연산자이다.a에 10을 저장한다.
a == 10
==는 두 값이 같은지 비교하는 연산자이다.a와 10이 같은가?
| 연산자 | 의미 |
|---|---|
= | 값 대입 |
== | 두 값이 같은지 비교 |
파이썬에서는
True,False뿐만 아니라 우리가 지금까지 배운 자료형들도 상황에 따라 참 또는 거짓으로 판단된다.
None등도 참 또는 거짓으로 판단할 수 있다.
대표적인 값을 정리하면 다음과 같다.
| 값 | 참 / 거짓 |
|---|---|
"python" | 참 |
"" | 거짓 |
[1, 2, 3] | 참 |
[] | 거짓 |
(1, 2, 3) | 참 |
() | 거짓 |
{'a': 1} | 참 |
{} | 거짓 |
1 | 참 |
0 | 거짓 |
None | 거짓 |
여기서 중요한 규칙을 찾을 수 있다.
문자열 → 비어 있으면 False
리스트 → 비어 있으면 False
튜플 → 비어 있으면 False
딕셔너리 → 비어 있으면 False
"python"
값이 있음 → True
""
비어 있음 → False
[1, 2, 3]
요소가 있음 → True
[]
요소가 없음 → False
(1, 2, 3)
요소가 있음 → True
()
요소가 없음 → False
{'name': 'pingu'}
요소가 있음 → True
{}
요소가 없음 → False
숫자는
0일 경우 거짓으로 판단한다.
0
False
0이 아닌 숫자는 참으로 판단한다.1
3
100
-1
-50
True
음수라고 해서 거짓이 되는 것은 아니다.
0 → False
0 이외 → True
None은 값이 없음을 나타내는 특별한 객체이다.
None
False처럼 동작한다.None → False
None에 대해서는 이후에 조금 더 자세히 알아보자.처음에는 다음과 같이 기억하면 이해하기 쉽다.
비어 있다 → False
값이 있다 → True
"" # False
"python" # True
[] # False
[1, 2, 3] # True
() # False
(1, 2) # True
{} # False
{'a': 1} # True
0 # False
1 # True
물론 정확하게는 자료형마다 참과 거짓을 판단하는 규칙이 있지만, 지금 단계에서는 비어 있는 값과 숫자 0은 대부분 False라고 기억하면 이해하기 쉽다.
자료형의 참과 거짓은 앞으로 배울
if문과while문에서 많이 사용된다.
다음 예를 살펴보자.
>>> if []:
... print("참")
... else:
... print("거짓")
...
거짓
[]는 비어 있는 리스트이다.False로 판단된다.else 부분이 실행되어 "거짓"이 출력된다.반대로 요소가 들어 있는 리스트를 사용해 보자.
>>> if [1, 2, 3]:
... print("참")
... else:
... print("거짓")
...
참
[1, 2, 3]에는 요소가 들어 있다.True로 판단된다."참"이 출력된다.아직
if문을 배우지 않았다면 다음 정도로 이해하면 된다.
if 조건:
조건이 참일 때 실행
else:
조건이 거짓일 때 실행
자료형의 참과 거짓을 이용하면 다음과 같은 코드도 작성할 수 있다.
>>> a = [1, 2, 3, 4]
>>> while a:
... print(a.pop())
...
4
3
2
1
a = [1, 2, 3, 4]
a는 참으로 판단된다.[1, 2, 3, 4] → True
a.pop()은 리스트의 마지막 요소를 꺼내고 삭제한다.[1, 2, 3, 4]
pop()
↓
4
[1, 2, 3]
[1, 2, 3, 4]
↓ pop()
[1, 2, 3]
↓ pop()
[1, 2]
↓ pop()
[1]
↓ pop()
[]
[]
False이므로 while문이 종료된다.요소 있음 → True → while 계속 실행
요소 없음 → False → while 종료
이러한 방식은 파이썬 프로그램에서 자주 사용된다.
자료형이 참인지 거짓인지 직접 확인하고 싶다면
bool()함수를 사용할 수 있다.
bool(값)
True
False
>>> bool('python')
True
'python'은 비어 있지 않은 문자열이므로 True이다.>>> bool('')
False
''는 비어 있는 문자열이므로 False이다.다음 두 문자열은 다르다.
""
" "
>>> bool("")
False
>>> bool(" ")
True
눈으로 보기에는 비슷하지만 완전히 다른 값이다.
"" → 문자 0개 → False
" " → 공백 1개 → True
>>> bool([1, 2, 3])
True
True이다.>>> bool([])
False
False이다.>>> bool(0)
False
>>> bool(3)
True
0이 아니므로 참이다.>>> bool(-1)
True
숫자는 다음과 같이 기억하면 된다.
0 → False
0 이외 → True
>>> bool("python")
True
>>> bool("")
False
>>> bool([1, 2, 3])
True
>>> bool([])
False
>>> bool((1, 2))
True
>>> bool(())
False
>>> bool({'a': 1})
True
>>> bool({})
False
>>> bool(0)
False
>>> bool(100)
True
>>> bool(None)
False
bool(a)와 a == True는 다르다초보자가 많이 헷갈릴 수 있는 부분이다.
>>> a = [1, 2, 3]
bool(a)의 결과는 True이다.>>> bool(a)
True
그렇다면 다음 결과도
True일까?
>>> a == True
False
False이다.그 이유는 두 표현의 의미가 다르기 때문이다.
bool(a)
는
"a를 참/거짓으로 판단하면 무엇인가?"
를 확인하는 것이다.
반면
a == True
는
"리스트 a라는 값 자체가 True와 같은 값인가?"
를 비교하는 것이다.
a는 리스트이고 True는 bool 자료형이므로 서로 같은 값이 아니다.따라서 다음 두 문장은 같은 의미가 아니다.
bool(a) == True
a == True
! 중요
a = [1, 2, 3] bool(a) # True a == True # False
a자체가True라는 뜻이 아니라,
조건으로 사용했을 때 참으로 판단된다는 뜻이다.
불 자료형에서는 여러 조건을 연결하기 위해 논리 연산자를 사용할 수 있다.
and
or
not
| 연산자 | 의미 |
|---|---|
and | 그리고 |
or | 또는 |
not | 반대 |
and는 양쪽 조건이 모두 참일 때만 True를 반환한다.
>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> False and False
False
표로 정리하면 다음과 같다.
| A | B | A and B |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
즉,
and는 둘 다 참이어야 참이다.
True and True → True
하나라도 False
↓
False
>>> x = 5
>>> y = 10
>>> x > 0 and y > 0
True
x > 05 > 0 → True
y > 010 > 0 → True
True and True
↓
True
or는 양쪽 조건 중 하나라도 참이면 True를 반환한다.
>>> True or True
True
>>> True or False
True
>>> False or True
True
>>> False or False
False
표로 정리하면 다음과 같다.
| A | B | A or B |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
즉,
or는 하나라도 참이면 참이다.
하나라도 True
↓
True
둘 다 False
↓
False
>>> x = 5
>>> y = 10
>>> x > 10 or y > 5
True
x > 105 > 10 → False
y > 510 > 5 → True
False or True
↓
True
가 된다.
not은 참과 거짓을 반대로 바꾸는 연산자이다.
>>> not True
False
>>> not False
True
간단하게 정리하면 다음과 같다.
| 값 | not 결과 |
|---|---|
| True | False |
| False | True |
True → not → False
False → not → True
앞에서 숫자
1은 참,0은 거짓이라고 배웠다.
>>> bool(1)
True
>>> bool(0)
False
not을 사용하면 결과가 반대가 된다.>>> not 1
False
>>> not 0
True
>>> x = 5
>>> y = 10
>>> x > y
False
x > y는 거짓이다.not을 붙이면 결과가 반대로 바뀐다.>>> not (x > y)
True
x > y
5 > 10
↓
False
↓
not False
↓
True
논리 연산자 3개를 간단하게 정리하면 다음과 같다.
| 연산자 | 의미 | True가 되는 조건 |
|---|---|---|
and | 그리고 | 두 조건 모두 참 |
or | 또는 | 하나 이상 참 |
not | 반대 | 참/거짓을 반대로 변경 |
간단하게 외우면 다음과 같다.
and
→ 둘 다 True여야 True
or
→ 하나라도 True면 True
not
→ True ↔ False
예를 들어 다음 조건을 살펴보자.
age = 20
has_ticket = True
and를 사용할 수 있다.age >= 18 and has_ticket
True and True
↓
True
or를 사용할 수 있다.age >= 18 or has_ticket
not을 사용할 수 있다.not has_ticket
실제 프로그램에서는 논리 연산자를 단독으로 사용하는 것보다 비교 연산자와 함께 사용하는 경우가 많다.
x = 5
y = 10
>>> x > 0 and y > 0
True
>>> x > 10 or y > 5
True
>>> not (x > y)
True
코드가 복잡해 보인다면 각각 나누어서 생각하면 쉽다.
x > 0 and y > 0
먼저
x > 0 → True
y > 0 → True
그리고
True and True
따라서
True
가 된다.
불 자료형에서 가장 중요한 내용을 정리하면 다음과 같다.
True, False 두 가지 값을 가진다.True
False
True
False
true # X
false # X
bool이다.>>> type(True)
<class 'bool'>
>>> 1 == 1
True
>>> 2 < 1
False
bool("")
# False
bool([])
# False
bool("python")
# True
bool([1, 2, 3])
# True
0은 거짓이다.bool(0)
# False
0이 아닌 숫자는 참이다.bool(1)
# True
bool(-10)
# True
None은 거짓으로 판단된다.bool(None)
# False
and는 두 조건이 모두 참이어야 참이다.True and True
# True
or는 하나라도 참이면 참이다.True or False
# True
not은 참과 거짓을 반대로 바꾼다.not True
# False
not False
# True
! 불 자료형 핵심
불 자료형에서 가장 먼저 기억해야 할 것은 다음과 같다.
True → 참 False → 거짓그리고 다른 자료형도 조건문에서 참과 거짓으로 판단될 수 있다.
빈 문자열 "" → False 빈 리스트 [] → False 빈 튜플 () → False 빈 딕셔너리 {} → False 숫자 0 → False None → False 값이 들어 있음 → 대부분 True논리 연산자는 다음 3가지만 우선 확실하게 기억하자.
and → 둘 다 참이어야 참 or → 하나라도 참이면 참 not → 참과 거짓을 반대로앞으로 배우게 될
if,while문은 결국 조건을 True와 False로 판단해서 프로그램의 실행 흐름을 결정하는 것이므로 불 자료형을 확실하게 이해해 두는 것이 중요하다.