IFP 겨울방학 스터디(Unit 8)

유재우·2022년 1월 7일
0

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와 같다"라는 뜻으로 올바른 것을 고르세요.
  1. x = 5
  2. x <= 5
  3. x == 5
  4. x != 5
  5. x & 5
답 : 3
풀이 : 값이 같다를 비교하는 비교 연산자인 ==을 이용한 값인 3번이 답이다.

  • 다음 중 비교 연산자의 결과로 올바르지 않은 것을 고르세요.
  1. 6 == 2 * 3
    True
  2. 4 != 2 + 2
    False
  3. 2 * 3 is 3 + 3
    True
  4. 8 is 4 * 2.0
    True
  5. 5 is 6 - 1.1
    False
답 : 4
풀이 : 4번은 8 is 8.0으로 객체를 비교하는 is연산자를 사용했기 때문에 정수 is 실수로 판단되기 때문에 False가 출력되어야 한다.

  • 다음 중 비교 연산자와 논리 연산자의 결과로 올바른 것을 모두 고르세요.
a = 10
b = 20
  1. a == 10 or b == 10
    False
  2. a >= 10 and b < 30
    True
  3. not a == 10
    False
  4. b != 20 or a != 10
    True
  5. 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를 이용하여 값들을 판단해서 출력한다.
profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글