Unit 8
불(Bool)과 비교/논리 연산자 사용하기
비교 연산자(>, = 등)
- 불(Bool)은 True, False로 표현하며 1, 3.5, 'python' 처럼 값의 일종이다.
>>> True True >>> False False >>> 3 > 1 True
- 두 숫자가 같은지 비교할 때는 ==(equal), 다른지 비교할 때는 !=(not equal)을 사용한다.
- '=' 는 할당 연산자로 이미 사용되고 있기 때문에 두 값이 같은지를 비교할 때는 '==' 를 사용한다.
- 문자열은 대소문자를 구분하기 때문에 단어가 같아도 대소문자가 다르면 다른 문자로 판단하다.
>>> 'Python' == 'Python' True >>> 'Python' == 'python' False
- 부등호를 사용할 때는 첫 번째 값을 기준으로 큰지, 작은지를 판단한다.
- is와 is not도 같다, 다르다의 의미이지만, ==와 !=는 값 자체를 비교하고 is와 is not은 객체를 비교한다.
- 1과 1.0은 정수와 실수라는 차이점이 있지만 값은 같기 때문에 ==로 비교하면 True가 나온다. 하지만 is를 사용할 때는 1은 정수객체, 1.0은 실수 객체라는 차이점이 있으므로 두 객체는 서로 다르고, False값이 나오게 된다.>>> 1 == 1.0 True >>> 1 is 1.0 False
※ 값을 비교할 때는 is를 쓰지 않는다.
>>> a = -5
>>> a is -5
True
>>> a = -6
>>> a is -6
False
- 변수 a가 있는 상태에서 다른 값을 할당하면 메모리 주소가 달라질 수 있기 때문에 서로 다른 객체가 되므로 값이 같더라도 is로 비교하면 False가 나온다. 즉, 값(숫자)을 비교할 때는 비교 연산자를 사용해야 한다.
논리 연산자(and, or, not)
- and 연산자는 두 값이 모두 True여야 True가 나오고, 하나라도 False라면 False가 나온다.
>>> True and True True >>> True and False False >>> False and False Fals
- or 연산자는 두 값 중 하나라도 True이면 True가 나오고, 두 값이 모두 False여야만 False가 나온다.
>>> True or True True >>> True or False True >>> False or True True >>> False or False False
- not은 논리값을 뒤집기 때문에 not True는 False가 되고, not False는 True가 된다.
>>> not True False >>> not False True
- 식 하나에 and, or, not 연산자가 모두 들어있다면 not, and, or 순으로 판단한다.
>>> not True and False or not False True
- 순서가 헷갈릴 때는 괄호로 판단 순서를 명확하게 나타내 주는 것이 좋다.
>>> ((not True) and False) or (not False) True
논리 연산자와 비교 연산자를 함께 사용하기
- 논리 연산자와 비교 연산자를 함께 사용할 때는 비교연산자(is, ==, > 등)를 먼저 판단하고 논리 연산자(not, and, or)를 판단한다.
>>> 10 == 10 and 10 != 5 # True and True True >>> 10 > 5 or 10 < 3 # True or False True >>> not 10 > 5 # not True False >>> not 1 is 1.0 # not False True
정수, 실수, 문자열을 불(Bool)로 만들기
- 정수, 실수, 문자열을 불로 만들 때는 bool을 사용한다.
- 이때 정수 1은 True, 0은 False이다.
- 문자열의 내용 자체는 판단하지 않고 값이 있으면 True이기 때문에, 문자열의 내용이 'False'라도 bool로 만들면 True이다.
- 즉, 정수 0, 실수 0.0 이외의 모든 숫자는 True이며 빈 문자열 '', ""를 제외한 모든 문자열은 True이다.
>>> bool(1) True >>> bool(0) False >>> bool(1.5) True >>> bool('False') True
단락 평가
- 단락 평가는 첫 번째 값 만으로 결과가 확실할 때 두 번째 값은 확인(평가)하지 않는 방법이다.
- and 연산자는 두 값이 모두 참일때만 참이므로 첫 번째 값이 거짓이면 두 번째 값은 확인하지 않고 바로 거짓으로 결정한다.
# 첫 번째 값이 거짓이므로 두 번째 값은 확인하지 않고 거짓으로 결정 print(False and True) # False print(False and False) # False
- or 연산자는 두 값중 하나만 참이어도 참이 되므로 첫 번째 값이 참이면 두 번째 값을 확인하지 않고 바로 참으로 결정한다.
# 첫 번째 값이 참이므로 두 번째 값은 확인하지 않고 참으로 결정 print(True or True) # True print(True or False) # True
- 문자열 'python'도 bool로 따지면 True이기 때문에 True and True가 되어 True가 나올 것 같지만, 파이썬에서 논리 연산자는 마지막으로 단락 평가를 실시한 것을 그대로 반환하기 때문에 'python'이 출력된다. -> 논리 연산자는 무조건 bool을 반환하지 않는다.
>>> True and 'Python' 'Python'
- 아래처럼 마지막으로 단락 평가를 실시한 값이 bool이면 bool을 반환한다.
>>> 'Python' and True True >>> 'Python' and False False
- and 연산자 앞에 False나 False로 치는 값이 와서 첫 번째 값 만으로도 결과가 결정날 때는 첫 번째 값이 반환된다.
>>> False and 'Python' False >>> 0 and 'Python' # 0은 False이므로 and 연산자는 두 번째 값을 평가하지 않음 0
- or 연산자도 마지막으로 단락 평가를 실시한 값이 반환된다.
- or 연산자에서 첫 번째 값 만으로 결과가 결정되므로 첫 번째 값이 반환되는 경우가 있다.
>>> True or 'Python' True >>> 'Python' or True 'Python'
- 만약 두 번째 값까지 판단해야 한다면 두 번째 값이 반환된다.
>>> False or 'Python' 'Python' >>> 0 or False False
정리 참조
https://dojang.io/course/view.php?id=7
강좌: 파이썬 코딩 도장
모두 펼치기모두 접기
dojang.io
'Python 코딩도장' 카테고리의 다른 글
파이썬 코딩도장 Unit 10 정리 : 리스트와 튜플 (0) | 2022.01.11 |
---|---|
파이썬 코딩도장 Unit09 정리 : 문자열 사용 (0) | 2022.01.11 |
파이썬 코딩도장 Unit 07 정리 : 다양한 출력 방법 (0) | 2022.01.10 |
파이썬 코딩도장 Unit 03~Unit 12 심사문제 풀이 (0) | 2022.01.08 |
파이썬 코딩도장 Unit 06 정리 : 변수와 입력 (0) | 2022.01.06 |