본문 바로가기
Python

파이썬-연산자

by 앵남(Andy) 2021. 9. 15.

글 개요

파이썬 문법을 복습하기 위한 내용을 정리하는 글입니다. 

파이썬의 문법인 연산자 정리하기 

 

 

 

글 본문

 

연산자

연산자란 우리가 잘 알고있는 사칙연산을 다루는 것이 연산자 이고, 연산의 대상을 피연산자라고합니다.

연산자의 종류는 산술 연산자, 할당 연산자, 비교 연산자, 논리 연산자가 있습니다.

 

산술 연산자: +, -, *, /, %, //, **

할당 연산자: = , +=, -=, *=, /=, %=, //=

비교 연산자: >,>=, <, <=, ==, !=

논리 연산자: and, or, not

 

 

정수를 이용한 덧셈

num1 = 3
num2 = 5
result = num1 + num2 
print(f'result: {result}')

 

실수를 이용한 덧셈

fnum1 = 3.14
fnum2 = 0.12

result = fnum1 + fnum2
print(f'result: {result})
# 소수점 두 번째자리수 까지
print('result: %.2f' % result)

 

문자를 이용한 덧셈

str1 = 'Good'
str2 = 'morning'
result = str1 + str2
print(f'result: {result}')

문자를 이용한 덧셈은 문자를 옆으로 나열합니다. 하지만, 숫자와 문자를 덧셈을 하게된다면, 에러가 나타납니다. 

 

 

실습

이번달 알바비와 카드값을 입력으로 받고, 남은 금액이 얼마인지 출력해보세요.

partTimeMoney = int(input('알바비: '))
cardMoney = int(input('카드값: '))

result = partTimeMoney - cardMoney

print('알바비: {}'.format(partTimeMoney))
print('카드값: {}'.format(cardMoney))
print('남는값: {}'.format(result))

 

 

곱셈 연산자 

곱셈 연산은 정수와 실수 연산이랑 같습니다.또한 문자열도 곱셈이 가능합니다.

문자열 곱셈은 곱셈만큼 반복이 가능합니다.

str1 = 'Hi '

result = str1 * 5
print(result)
Hi Hi Hi Hi Hi

 

 

 

나눗셈 연산자

나눗셈 연사자는 /로 나눗셈을 합니다.

num1 = 10
num2 = 5

print(num1/num2)#2

0을 어떤 수로 나눗셈을 하는 경우는 항상 0이라는 결과값을 볼 수 있습니다. 하지만, 어떤 수를 0으로 나눌 수 없습니다. 

나눗셈을 했을 때 결과값의 타입은 float 타입 입니다. 

 

 

나머지와 몫을 한번에 구하는 방법

파이썬에는 divmod라는 함수가 존재합니다. 이 함수는 나머지와 몫을 한번에 구할 수 있습니다. 

divmod(나눠지는 수, 나눌 수) 결과 값 (몫, 나머지) ---> 튜플 형태로 값이 나온다. 

 

result = divmod(10, 2)
print('result: {}'.format(result))
print('몫:', result[0])
print('나머자:'result[1])

 

 

 

 

실습

국어, 영어, 수학 점수를 입력받고, 합계와 평균을 출력해 봅시다.

kor_score = int(input('국어점수: '))
eng_score = int(input('영어점수: '))
math_score = int(input('수학점수: '))

total = kor_score + eng_score + math_score
mean = total/3
print('국어점수: {}'.format(kor_score))
print('영어점수: {}'.format(eng_score))
print('수학점수: {}'.format(math_score))
print('합계: {}'.format(total))
print('총 평점: {}'.format(mean))

 

123개의 사과를 4개씩 직원들에게 나눠주려고 합니다. 최대로 나누어 줄 수 있는 직원수와 남는 사과 개수를 출력해 봅시다.

employee = 123
apple = 4 

result = divmod(employee, apple)
print('사과를 나누어 줄 수 있는 최대 직원 수: {}명'.format(result[0]))#30명
print('남는 사과 개수: {}개'.format(result[1])# 3개

 

나머지를 구하는 연산자는 %, 몫을 구하는 연산자는 //

몫과 나머지를 한번에 구하는 방법 divmod(나눠지는 수, 나누는 수)

 

 

논리 연산자

논리 연산자 란, 피연산자의 논리(True, False)를 이용한 연산입니다. 

논리 연산자의 종류는 and, or, not 존재합니다. 

 

 

and 연산

A and B: A와 B 모두 True인 경우만 결과값으로 True로 받습니다. 

쉽게 이해하자면, 모두다 만족을 해야 True 결과값을 받습니다. 

 

 

or 연산

A or B: A와 B 둘중 하나만 True이면 결과값으로 True로 받습니다.

 

 

not 연산

not A: A의 상태를 부정하는 결과를 받습니다. 예를들어, not True---> False결과값 not False ---> True

 

 

 

실습

백신 접종 대상자는 20미만 또는 65세 이상자에 한합니다.를 논리 연산자를 이용해서 풀어보세요.

age = int(input('나이 입력: '))
vacine = ((age < 20) or (age >=65))
print('사용자 나이: {} 백신 가능 여부: {}'.format(age, vacine))

 

 

 

operator 모듈 

모듈이란, 누군가가 이미 잘 만들어 놓은 휼륭한 기능을 말합니다. 

 

operator 모듈의 산술 연산자 관련 함수 

+: operator.add()

 

-: operator.sub()

 

*: operator.mul()

 

/: operator.truediv()

 

%: operator.mod()

 

//: operator.floordiv()

 

**: operator.pow()

import  operator


num1 = 8
num2 = 3

print('{} + {} = {}'.format(num1, num2, operator.add(num1, num2))) # 덧셈
print('{} - {} = {}'.format(num1, num2, operator.sub(num1, num2))) # 뺄셈
print('{} * {} = {}'.format(num1, num2, operator.mul(num1, num2))) # 곱셈
print('{} / {} = {}'.format(num1, num2, operator.truediv(num1, num2))) # 나눗셈
print('{} % {} = {}'.format(num1, num2, operator.mod(num1, num2)))# 나머지
print('{} // {} = {}'.format(num1, num2, operator.floordiv(num1, num2))) # 몫
print('{} ** {} = {}'.format(num1, num2, operator.pow(num1, num2))) # 거듭제곱

 

operator 모듈은 산술 연산자 말고도 비교 연산자도 있고, 논리 연산자 관련 함수도 존재합니다.

 

==: operator.eq()

 

!=: operator.ne()

 

>: operator.gt()

 

>=: operator.ge()

 

<: operator.lt()

 

<=: operator.le()

 

num1 = 1
num2 = 2

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

 

 

 

실습

random과 operator 모듈을 이용하여, 10부터 100사이의 난수 중 십의 자리와 일의 자리가 각각 3의 배수인지

판단하는 코드를 만들어 주세요.

import random
rInt = random.randint(10, 100)
tenInt = operator.floordiv(rInt, 10) # 몫 구하기
oneInt = operator.mod(rInt, 10)# 나머지 구하기
#한번에 구하기
# result = divmod(rInt, 10) result[0] --> 몫 result[1]---->나머지
print('십의자리수: {}'.format(tenInt))
print('일의자리수: {}'.format(oneInt))
print('십의 자리수는 {}의 배수이다:  {}'.format(3, (operator.mod(tenInt, 3) == 0)))
print('일의 자리수는 {}의 배수이다:  {}'.format(3, (operator.mod(oneInt, 3) == 0)))

 

 

'Python' 카테고리의 다른 글

Pandas - 기초 정리  (1) 2021.09.16
파이썬-조건식  (0) 2021.09.15
정적타입언어 vs 동적타입언어  (0) 2021.09.15
Python- matplotlib 한글설정하기  (0) 2021.09.14
파이썬 - 입력 출력 다루기  (0) 2021.09.13

댓글