Python_논리 연산자

장해수·2023년 6월 6일
  1. 논리 연산자
  • 피연산자의 논리(True, False)를 이용한 연산
    1) 논리 연산자 종류
  • and, or, not
    2) and 연산
  • A and B: A와 B가 모두 True인 경우 결과값이 True
print('{} and {}: {}'.format(True, True, (True and True)))
print('{} and {}: {}'.format(True, False, (True and False)))
print('{} and {}: {}'.format(False, True, (False and True)))
print('{} and {}: {}'.format(False, False, (False and False)))
True and True: True
True and False: False
False and True: False
False and False: False

3) or 연산

  • A or B: A, B 중 하나만 True인 경우 결과값이 True
print('{} or {}: {}'.format(True, True, (True or True)))
print('{} or {}: {}'.format(True, False, (True or False)))
print('{} or {}: {}'.format(False, True, (False or True)))
print('{} or {}: {}'.format(False, False, (False or False)))
True or True: True
True or False: True
False or True: True
False or False: False

4) not 연산 (부정 연산)

  • not A: A의 상태를 부정하는 결과
print('not {}: {}'.format(True, (not True)))
print('not {}: {}'.format(False, (not False)))
not True: False
not False: True
  1. 실습
    예제 1) '백신 접종 대상자는 20세 미만 또는 65세 이상자에 한합니다.'를 논리연산자를 이용해서 코딩해보자.
age = int(input(('나이: ')))
vaccine = (age < 20) or (age >= 65)
print('나이: {}, 접종 가능 여부: {}'.format(age, vaccine))
나이: 29
나이: 29, 접종 가능 여부: False
나이: 68
나이: 68, 접종 가능 여부: True

예제 2) 국어, 영어, 수학 점수를 입력하고 평균이 70점 이상이면 True를 출력하는 코드를 작성해보자. (단, 과목별 점수가 최소 60점 이상인 경우에 True를 출력한다.)
1) 해설 보기 전

  • 코드
kor = int(input('국어 점수: '))
eng = int(input('영어 점수: '))
mat = int(input('수학 점수: '))
avg = (kor + eng + mat) / 3

print('국어 점수: {}, 결과: {} \n영어 점수: {}, 결과: {} \n수학 점수: {}, 결과: {} \n평균 점수: {}, 결과: {} \n과락 결과: {} \n최종 결과: {}'
      .format(kor, (kor >= 60),
              eng, (eng >= 60),
              mat, (mat >= 60),
              avg, (avg >= 70),
              (kor and eng and mat >= 60),
              ((kor and eng and mat >= 60) and (avg >= 70))))
  • 결과
국어 점수: 85
영어 점수: 90
수학 점수: 55
평균 점수: 76.66666666666667, 결과: True
국어 점수: 85, 결과: True
영어 점수: 90, 결과: True
수학 점수: 55, 결과: False
과락 결과: False
최종 결과: False

2) 해설

  • 코드
passScore1 = 60
passScore2 = 70
kor = int(input('국어 점수: '))
eng = int(input('영어 점수: '))
mat = int(input('수학 점수: '))
avg = (kor + eng + mat) / 3
avgResult = avg >= passScore2
korResult = kor >=passScore1
engResult = eng >=passScore1
matResult = mat >=passScore1
subResult = korResult and engResult and matResult

print('평균 점수: {}, 결과: {}'.format(avg, avgResult))
print('국어 점수: {}, 결과: {}'.format(kor, korResult))
print('영어 점수: {}, 결과: {}'.format(eng, engResult))
print('수학 점수: {}, 결과: {}'.format(mat, matResult))
print('과락 결과: {}'.format(subResult))
print('최종 결과: {}'. format(avgResult and subResult))
  • 결과
국어 점수: 85
영어 점수: 90
수학 점수: 55
평균 점수: 76.66666666666667, 결과: True
국어 점수: 85, 결과: True
영어 점수: 90, 결과: True
수학 점수: 55, 결과: False
과락 결과: False
최종 결과: False

3) 느낀 점
변수를 잘 선언하면 코드가 복잡하지 않고 깔끔하게 나오는구나...
변수 잘 쓰자,, 엉 으엉ㅇ

profile
데이터 진행시켜

0개의 댓글