[python] 복합 연산자 / 논리 연산자

jane05·2023년 9월 3일
0
post-thumbnail

1️⃣ 복합 연산자

num = 10
num += 3 #num = num + 3
print('num : {}'.format(num))

num = 10
num %= 3
print('num : {}'.format(num))

num = 10
num **= 3
print('num : {}'.forma(num))

#실습하기: 누적 강수량 구하기
rainAmount = 0
rainAvgAmount = 0
totalRainAmount = 0

totalRainAmount += 30
print('1월 누적 강수량: {}mm'.format(totalRainAmount))

(중략)

rainAvgAmount = totalRainAmount / 12

print('-' * 30)
print('연간 누적 강수량: {}'.format(totalRainAmount))
print('연간 평균 강수량: {}'.format(rainAvgAmount))

2️⃣ 비교연산자

1. 숫자 비교

  • 모든 비교 연산자의 결과는 bool형으로 나옴*
  • 6가지 비교 연산자
    • num1 > num2 : True
    • num1 >= num2 : True
    • num1 < num2 : False
    • num1 <= num2 : False
    • num1 == num2 : False
    • num1 != num2 : True
num1 = 10; num2 = 5 #세미콜론 의미: 코드가 끝났다는 뜻

result = num1 > num2
print('num1 > num2: {}'.format(result))

#출력
num1 > num2: True
#실습하기
maxLength = 5200
maxWidth = 1985

myCarLength = int(input('전장 길이 입력: '))
myCarWidth = int(input('전폭 길이 입력: '))

print('전장 가능 여부: {}'.format(myCarLength <= maxLength))
print('전폭 가능 여부: {}'.format(myCarWidth <= maxWidth))

2. 문자 비교

  • 아스키 코드를 이용한 비교 연산
  • 검색창에 '아스키 코드'를 검색하면 나옴
  • 십진수에 해당하는 수를 비교
cha1 = 'A' #65
cha2 = 'S' #83

#\' : 기능이 죽어 있다가 출력이 될 때 실행
print('\'{}\' > \'{}\' : {}'.format(cha1, cha2, (cha1 > cha2)))

#출력
'A' > 'S' : False

#문자를 숫자로 표현 : ord 함수
print('\'A\' -> {}'.format(ord('A')))

#숫자를 문자로 표현 : chr 함수
print('65 -> {}'.format(chr(65)))

#출력
'A' -> 65
's' -> 115
userInputAlphabet = input('알파벳 입력 : ')
print('{} : {}'.format(userInputAlphabet, ord(userInputAlphabet)))

3️⃣ 논리 연산자

  • 논리 연산자란, 피연산자의 논리(True, False)를 이용한 연산
  • 논리 연산자의 종류: and, or, not
#국어, 영어, 수학 점수를 입력하고 평균이 70점 이상이면 True를 출력하는 코드를 작성해 보자.
(, 과목별 점수가 최소 60이상인 경우에 True를 출력한다.)

#True를 출력한다 -> 비교 연산자 사용 -> 변수(헷갈리지 않게!)
passScore1 = 60
passScore2 = 70

korResult = korScore >= passScore1
engResult = engScore >= passScore1
matResult = matScore >= passScore1

scoreAvg = (korScore + engScore + matScore) / 3

scoreAvgResult = scoreAvg >= passScore2
subjectResult = korResult and engResult and matResult

korScore = int(input('국어 점수: '))
engScore = int(input('영어 점수: '))
matScore = int(input('수학 점수: '))

print('평균 : {}, 결과 : {}'.format(scoreAvg, scoreAvgResult))

print('국어 : {}, 결과 : {}'.format(korScore, korResult))
print('영어 : {}, 결과 : {}'.format(engScore, engResult))
print('수학 : {}, 결과 : {}'.format(matScore, matResult))

print('과락 결과 : {}'.format(subjectResult))
print('최종 결과 : {}'.format(scoreAvgResult and subjectResult))

4️⃣ 모듈

1. operator 모듈

  • '+ : operator.add()
  • '- : operator.sub()
  • '* : operator.mul()
  • / : operator.truediv() #나누기
  • % : operator.mod() #나머지
  • // : operator.floordiv() #몫
  • ** : operator.pow()
print('{} + {} : {}'.format(num1, num2, operator.add(num1, num2)))
age = int(input('나이 입력: '))

vaccine = operator.or_(operator.lt(age, 20), operator.ge(age, 65))

print('age : {}, result : {}'.format(age, vaccine))

1) 비교 연산자 관련 함수

  • == : operator.eq()
  • != : operator.ne()
  • '> : operator.gt()
  • '>= : operator.ge()
  • < : operator.lt()
  • <= : operator.le()
print('{} > {} : {}'.format(num1, num2, operator.gt(num1, num2)))
print('{} < {} : {}'.format(num1, num2, operator.lt(num1, num2)))

2) 논리 연산자 관련 함수

  • and : operator.and() #and(함수)
  • or : operator.or_()
  • not : operator.not_()
flag1 : True
flag2 : False

print('not {} : {}'.format(flag1, operator.not_(flag1)))

#출력
not True : False

2. random 모듈

  • 난수가 랜덤하게 나오는 모듈
import random
rInt = random.randint(10, 100)

num10 = operator.floordiv(rInt, 10)
num1 = operator.mod(rInt, 10)

print('난수 : {}'.format(rInt))
print('십의 자리 : {}'.format(num10))
print('일이 자리 : {}'.format(num1))

print('십의 자리는 3의 배수이다. : {}'.format(operator.mod(num10, 3) == 0))
print('일의 자리는 3의 배수이다. : {}'.format(operator.mod(num1, 3) == 0))

profile
데이터 분석 공부 기록

0개의 댓글