본문 바로가기
Python 코딩도장

파이썬 코딩도장 Unit 08 정리 : Bool과 비교/논리 연산자

by chanfficial 2022. 1. 11.

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
    >>> 1 is 1.0
    False
    - 1과 1.0은 정수와 실수라는 차이점이 있지만 값은 같기 때문에 ==로 비교하면 True가 나온다. 하지만 is를 사용할 때는 1은 정수객체, 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