[Python] 파이썬 참/거짓 블리언(Boolean) 자료형 : 조건문, 논리 연산자, 비교 연산자
Python 분석과 프로그래밍/Python 프로그래밍 2017. 9. 3. 01:43Python 으로 if 를 활용한 분기문이나 for, while 을 활용한 반복문 프로그래밍에 들어가기에 앞서서, if, for, while 프로그래밍의 기초 지식이 되는 블리언 형식에 대해서 알아보겠습니다.
이번 포스팅은 어려운건 없구요, 그냥 편안하게 몸풀기 (머리 풀기?) 정도로 읽어보면 좋겠습니다.
(not 논리 연산자가 살짝 헷갈리기는 합니다만, 전반적으로 매우 쉬움)
블리언 형식(Boolean type)은 참(True), 거짓(False) 의 두 개 값을 가지는 자료형을 말합니다.
In [1]: a = 2 > 1
In [2]: a
Out[2]: True
In [3]: b = 2 < 1
In [4]: b
Out[4]: False
In [5]: type(a)
Out[5]: bool
|
불리언 값이 (1) 조건문, (2) 논리 연산자, (3) 비교 연산자에서 어떤 경우에 참(True)이고, 어떤 경우에 거짓(False) 인지에 대해서 짚고 넘어가 보겠습니다.
[ 파이썬 참/거짓 불리언 형식 (Python Boolean Type ]
(1) 조건문에서의 참, 거짓 (True, False in Conditional statements) |
프로그래밍의 조건문에서 참, 거짓을 판단할 때 블리언 False, None, 숫자 0, 비어있는 리스트, 비어 있는 튜플, 비어있는 사전 자료형의 경우에 False 로 판단을 합니다.
반대로 블리언 True, not None, 0이 아닌 숫자, 값이 있는 리스트, 값이 있는 튜플, 값이 있는 사전 자료형의 경우 True 로 판단을 하구요.
자료형마다 값이 없이 비어있으면 거짓, 값을 가지고 있으면 참이라고 파이썬은 판단한다는게 재미있습니다. ^^
각 경우 마다 bool() 함수를 사용해서 파이썬이 참(True)과 거짓(False) 중에 어떻게 판단을 하는지 예를 들어서 살펴보겠습니다.
# (1-1) Boolean False, True In [6]: bool(False) # False
Out[6]: False
In [7]: bool(True) # True
Out[7]: True
|
# (1-2) None is False In [8]: bool(None) # False
Out[8]: False
|
# (1-3) Number 0, 0.00 is False In [9]: bool(0) # False
Out[9]: False
In [10]: bool(0.00) # False
Out[10]: False
In [11]: bool(5) # True
Out[11]: True
|
# (1-4) blank List [] is False In [12]: bool([]) # False
Out[12]: False
In [13]: bool(['a', 'b']) # True
Out[13]: True
|
# (1-5) blank Tuple () is False In [14]: bool(()) # False
Out[14]: False
In [15]: bool(('a', 'b')) # True
Out[15]: True
|
# (1-6) blank Dictionary {} is False In [16]: bool({}) # False
Out[16]: False
In [17]: bool({'a': 'b'}) # True
Out[17]: True
|
(2) 논리 연산자에서 참, 거짓 (True, False in Logical operators) : not, and, or |
파이썬의 논리 연산자(Logical operators)에는 피연산자를 부정하는 not, 두 피연산자 간의 논리곱을 수행하는 and, 두 연산자 간의 논리합을 수행하는 or 의 3가지가 있습니다.
(2-1) 피연산자를 부정하는 'not' 논리 연산자
위에서 소개한 조건문에서의 참, 거짓에 not 연산자를 붙이면 참이 거짓으로 바뀌고, 거짓은 참으로 바뀌게 됩니다.
# (2-1) 피연산자 부정 'not' logical operator In [18]: not True # False
Out[18]: False
In [19]: not False # True
Out[19]: True
|
숫자 '0'은 거짓(False)라고 했으므로 앞에 부정 연산자 not 이 붙으면 참(True)이 됩니다. 반면, '0'이 아닌 숫자는 참(True)이라고 했으므로 앞에 not 이 붙으면 거짓(False)으로 바뀝니다.
In [20]: not 0 # True
Out[20]: True
In [21]: not 5 # False
Out[21]: False
|
None 은 거짓(False)라고 했으므로 not None은 참(True)로 평가합니다.
In [22]: not None # True
Out[22]: True
|
비어있는 문자열, 리스트, 튜플, 사전은 거짓(False)으로 평가한다고 했으므로, 피연산자를 부정하는 not 이 붙으면 참(True)으로 바뀌게 됩니다.
In [23]: not '' # denial of blank String -> True
Out[23]: True
In [24]: not [] # denial of blank List -> True
Out[24]: True
In [25]: not () # denial of blank Tuple -> True
Out[25]: True
In [26]: not {} # denial of blank Dictionary -> True
Out[26]: True
|
반대로, 문자열, 리스트, 튜플, 사전에 값이 들어있는 경우 참(True)으로 평가한다고 했으므로, 피연산자를 부정하는 not이 붙으면 거짓(False)이 됩니다. 위와 아래의 비어있는 자료형에 not 붙인 경우와 값이 있는 자료형에 not 붙인 경우의 참, 거짓이 처음엔 좀 직관적으로 와닿지가 안던데요, 자꾸 보니깐 그러려니 하게 되네요. ^^'
In [27]: not 'ab' # False
Out[27]: False
In [28]: not ['a', 'b'] # False
Out[28]: False
In [29]: not ('a', 'b') # False
Out[29]: False
In [30]: not {'a' : 'b'} # False
Out[30]: False
|
(2-2) 두 피연산자 간의 논리곱을 수행하는 and 논리 연산자
두 개의 피연산자가 모두 참(True and True)이면 True 이며, 두 피연산자 값 중에서 하나라도 거짓(False)이 있으면 거짓(False) 으로 판단합니다.
In [31]: True and True # True
Out[31]: True
In [32]: True and False # False
Out[32]: False
In [33]: False and True # False
Out[33]: False
In [34]: False and False # False
Out[34]: False |
(2-3) 두 피연산자 간의 논리합을 수행하는 or 논리 연산자
두 피연산자 중에서 한 개(True or False, False or True)나 혹은 두개 모두(True or True) 이라도 참(True)이면 참으로 평가합니다.
In [35]: True or True # True
Out[35]: True
In [36]: True or False # True
Out[36]: True
In [37]: False or False # False
Out[37]: False
|
(3) 비교 연산자에서의 참, 거짓 (True, False in Comparison operators) : ==, !=, >, >=, <, <= |
(3-1) == 비교 연산자
두 피연산자의 값이 같으면 참(True), 서로 다르면 거짓(False)으로 평가
# (3) Comparison(Relational) operators
In [39]: a = 1; b = 2; c = 2 # input data
# (3-1) == : If the values of two operands are equal, then the condition becomes true
In [40]: a == b # False
Out[40]: False
In [41]: b == c # True
Out[41]: True
|
(3-2) != 비교 연산자
두 피연산자의 값이 같지 않으면 참(True), 같으면 거짓(False)으로 평가 (음... 좀 헷갈리지요. ^^;)
# (3-2) != : If values of two operands are not equal, then condition becomes true In [42]: a != b # True
Out[42]: True
In [43]: b != c # False
Out[43]: False
|
(3-3) > 비교 연산자
: 왼쪽의 피연산자 값이 오른쪽의 피연산자 값보다 크면 참(True), 아니면 거짓(False)
In [39]: a = 1; b = 2; c = 2 # input data # (3-3) > : If the value of left operand is greater than the value of right operand, # then condition becomes true In [44]: a > b # False
Out[44]: False
In [45]: b > a # True
Out[45]: True
In [46]: b > c # False
Out[46]: False
|
(3-4) >= 비교 연산자
왼쪽의 피연산자 값이 오른쪽의 피연산자 값보다 크거나 같으면 참(True), 아니면 거짓(False)
In [39]: a = 1; b = 2; c = 2 # input data # (3-4) >= : If the value of left operand is greater than or equal to the value of right operand, # then condition becomes true In [47]: a >= b # False
Out[47]: False
In [48]: b >= a # True
Out[48]: True
In [49]: b >= c # True
Out[49]: True
|
(3-5) < 비교 연산자
왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작으면 참(True), 아니면 거짓(False)
In [39]: a = 1; b = 2; c = 2 # input data # (3-5) < : If the value of left operand is less than the value of right operand, # then condition becomes true In [50]: a < b # True
Out[50]: True
In [51]: b < a # False
Out[51]: False
In [52]: b < c # False
Out[52]: False
|
(3-6) <= 비교 연산자
왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같으면 참(True), 아니면 거짓(False)
In [39]: a = 1; b = 2; c = 2 # input data # (3-6) <= : If the value of left operand is less than or equal to the value of right operand, # then condition becomes true In [53]: a <= b # True
Out[53]: True
In [54]: b <= a # False
Out[54]: False
In [55]: b <= c # True
Out[55]: True
|
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요. ^^
다음번 포스팅에서는 if ~ else 분기문(Branch statement)에 대해서 알아보겠습니다.
'Python 분석과 프로그래밍 > Python 프로그래밍' 카테고리의 다른 글
[Python] 함수 정의 def (User-Defined Function) (0) | 2018.06.17 |
---|---|
[Python] for loop 반복문에 사용하는 range(), enumerate(), linspace(), linrange() 함수 (0) | 2018.04.07 |
[Python] if, elif, else 조건문을 사용해서 FizzBuzz 인터뷰 문제 풀기 (0) | 2018.02.06 |
[Python] 파이썬 while, for, continue, break 반복문 (loop statements) (0) | 2017.10.29 |
[Python] 파이썬 if, elif, else 분기문 (Python if, elif, else, nested if branch statement) (0) | 2017.09.03 |