8.1 불(bool)과 비교 연산자 사용하기
- 불(bool)은 True와 False로 표현하며 값이다.
- 비교,논리 연산자의 판단결과로 불(bool)값을 사용한다.
10 == 10.0 10 != 10.1 'hi' == 'Hi'
True
True
False
is, is not
- =, !=는 값 자체를 비교하는 것이고
is, is not은 객체를 비교하는 것이다.10 == 10.0 10 is 10.0 10 is not 10.0
True
False
True
- 값 비교에 is, is not을 사용하면 안된다.
그 이유는 처음 변수에 값을 할당하고 is를 사용하면 정상적인 값이 나오지만 값을 바꾸고 다시 사용한다면 정상적인 값이 나오지 않는다.a = 3 a is 3 a = 1 a is 1
True
False
논리 연산자 (and, or, not)
and
and는 두 값이 모두 True여야 True값이 나오고 하나라도 False가 있다면 False로 나온다.True and True True and False False and True False and False
True
False
False
False
or
or은 두 값중 하나 만 True여도 True값이 나온다.True or True True or False False or True False or False
True
True
True
False
not
not은 값을 반대로 뒤집는 역할을 한다.not True not False
False
True
여기서 and, or, not 논리 연산자가 식 하나에 들어있을 때엔 not, and, or 순으로 판단한다.
정수, 실수, 문자열을 불로 만들기
bool()을 사용하여 불값으로 변환 할 수 있다.
- 1은 True 값이고 0은 False 값이다.
- 숫자에선 0, 0.0 말고는 모두 True이다.
- 문자열에서는 빈 문자열 '', ""를 제외한 모든 문자열은 True이다.
단락평가
- 단락 평가는 첫 번째 값만으로 결과가 확실할 때 두 번째 값은 확인하지 않는 방법이다.
- 논리 연산자는 마지막으로 단락 평가를 실시한 값을 그대로 반환하기 때문에 무조건 불값으로 나오지 않는다.
'Hi' and True True and 'Hi'
True
Hi
8.3 퀴즈
- 다음 중 "x는 5와 같다"라는 뜻으로 올바른 것을 고르세요.
- x = 5
- x <= 5
- x == 5
- x != 5
- x & 5
답 : 3
풀이 : 값이 같다를 비교하는 비교 연산자인 ==을 이용한 값인 3번이 답이다.
- 다음 중 비교 연산자의 결과로 올바르지 않은 것을 고르세요.
- 6 == 2 * 3
True- 4 != 2 + 2
False- 2 * 3 is 3 + 3
True- 8 is 4 * 2.0
True- 5 is 6 - 1.1
False답 : 4
풀이 : 4번은 8 is 8.0으로 객체를 비교하는 is연산자를 사용했기 때문에 정수 is 실수로 판단되기 때문에 False가 출력되어야 한다.
- 다음 중 비교 연산자와 논리 연산자의 결과로 올바른 것을 모두 고르세요.
a = 10 b = 20
- a == 10 or b == 10
False- a >= 10 and b < 30
True- not a == 10
False- b != 20 or a != 10
True- not b != 20 and a > 5
False답 : 2, 3
풀이 : 2 - 값을 풀어서 비교를 하면 True and True이므로 맞는 답이다. 3 - 값을 먼저 풀어보면 not True이므로 False가 맞는 답이다.
8.4 연습문제: 합격 여부 출력하기
- 국어, 영어, 수학, 과학 점수가 있을 때 한 과목이라도 50점 미만이면 불합격이라고 정했습니다. 다음 소스 코드를 완성하여 합격이면 True, 불합격이면 False가 출력되게 만드세요.
korean = 92 english = 47 mathematics = 86 science = 81 print(_________________)
실행결과) False
답 : korean >= 50 and english >= 50 and mathematics >= 50 and science >= 50
풀이 : 한 과목이라도 50점 미만 일시에 불합격이므로 and를 사용했고 >=를 사용해서 값을 판단하게 만들었다.
8.5 심사문제: 합격여부 출력하기
- 표준 입력으로 국어, 영어, 수학, 과학 점수가 입력됩니다. 국어는 90점 이상, 영어는 80점 초과, 수학은 85점 초과, 과학은 80점 이상일 때 합격이라고 정했습니다(한 과목이라도 조건에 만족하지 않으면 불합격). 다음 소스 코드를 완성하여 합격이면 True, 불합격이면 False가 출력되게 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다).
입력) 90 81 86 80 결과) True
답 : korean,english,math,science = map(int, input().split()) print(korean >= 90 and english > 80 and math > 85 and science >=80)
풀이 : 입력한 값을 정수로 변환하여 저장을 한 후에 비교연산자와 논리연산자를 사용해서 합격여부를 출력하는 문제로 우선 변수들의 이름을 선언하고 map()을 사용해서 int값으로 변환되어 나오게 묶어주고 그 안에 입력해서 저장해야 하니까 input().split()을 이용하여 저장을 하고 출력 할 때에 문제에서 주어진 조건으로 비교를 하고 한 과목이라도 만족을 못하면 불합격이므로 and를 이용하여 값들을 판단해서 출력한다.