제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.18]
[강의 요약]
[Ch 01. 파이썬 기초] 강의 수강
16_산술 연산자(덧셈, 뺄셈)부터 19_산술 연산자(거듭제곱)까지 강의 수강하였음
연산자 종류
- 연산자 란?
- result = data1 + data2
- =, + : 연산자
- data1, data2 : 피연산자
- 산술 연산자 종류
[덧셈 연산자 코드]
# 정수를 이용한 덧셈
num1 = 9
num2 = 3
result = num1 + num2
print(f'result : {result}') # result : 12
# 실수를 이용한 덧셈
fNum1 = 3.14
fNum2 = 0.12
result = fNum1 + fNum2
print(f'result : {result}') # rsult : 3.2600000000000002
print('result : %.2f' % result) # result : 3.26
# 정수와 실수를 이용한 덧셈
result = num1 + fNum2
print(f'result : {result}') # result : 9.12
# 문자를 이용한 덧셈
str1 = 'Good'
str2 = ' '
str3 = 'morning'
result = str1 + str2 + str3
print(f'result : {result}') # result : Good morning
# 숫자와 문자를 이용한 덧셈
result = num1 + str1
print(f'result : {result}') # TypeError: unsupported operand type(s) for +: 'int' and 'str'
★코드 설명★
정수끼리 덧셈 : 가능
실수끼리 덧셈 : 가능
정수와 실수 덧셈 : 가능
문자끼리 덧셈 : 가능
숫자와 문자 덧셈 : 불가능
[뺄셈 연산자 코드]
# 정수를 이용한 뺄셈
num1 = 10
num2 = 20
result = num1 - num2 # result : -10
print(f'num1 : {num1}')
print(f'num2 : {num2}')
print(f'result : {result}')
# 실수를 이용한 뺄셈
fNum1 = 3.14
fNum2 = 0.14
result = fNum1 - fNum2 # result : 3.0
print(f'fNum1 : {fNum1}')
print(f'fNum2 : {fNum2}')
print(f'result : {result}')
print(f'type of result : {type(result)}') # type of result : <class 'float'>
# 정수와 실수를 이용한 뺄셈
result = num1 - fNum1
print(f'num1 : {num1}') # num1 : 10
print(f'fNum1 : {fNum1}') # fNum1 : 3.14
print(f'result : {result}') # result : 6.859999999999999
print(f'type of result : {type(result)}') # type of result : <class 'float'>
# 문자(열)을 이용한 뺄셈
str1 = 'Good'
str2 = ' '
str3 = 'afternoon'
result = str1 - str2 - str3
print('result : {}'.format(result)) # TypeError: unsupported operand type(s) for -: 'str' and 'str'
★코드 설명★
정수끼리 뺄셈 : 가능
실수끼리 뺄셈 : 가능
정수와 실수 뺄셈 : 가능
문자(열)끼리 뺄셈 : 불가능
[곱셈 연산자 코드]
# 숫자(정수, 실수)를 이용한 곱셈
num1 = 20
fNum1 = 3.14
result = num1 * fNum1
print('result : {}'.format(result)) # result : 62.800000000000004
print('result : %.2f' % result) # result : 62.80
# 문자(열)을 이용한 곱셈
str1 = 'Hi '
result = str1 * 7
print('result : {}'.format(result)) # result : Hi Hi Hi Hi Hi Hi Hi
★코드 설명★
숫자를 이용한 곱셈 : 가능
문자(열)을 이용한 곱셈 : 특이하게 곱한 횟수만큼 반복해서 결과가 나온다!
[나눗셈 연산자 코드]
# 숫자(정수, 실수)를 이용한 나눗셈
num1 = 10
num2 = 3
result = num1 / num2
print('num1 : {}, num2 : {}'.format(num1, num2)) # num1 : 10, num2 : 3
print('result : {}'.format(result)) # result : 3.3333333333333335
print('result : %.2f' % result) # result : 3.33
# 0을 나눗셈 하는 경우
num1 = 0
num2 = 3
result = num1 / num2
print('result : {}'.format(result)) # result : 0.0
# 0으로 나누는 경우
num1 = 0
num2 = 3
result = num2 / num1
print('result : {}'.format(result)) # ZeroDivisionError: division by zero
★코드 설명★
숫자를 이용한 나눗셈 : 무한대로 나오는 결과를 형식 문자를 이용해서 제한출력 할 수 있다.
0으로 나눗셈 하는 경우 : 결과 항상 0
0으로 나누는 경우 : 0으로 나눌 수 없음! 에러뜸
# 나눗셈의 결과는 항상 float
num1 = 20
num2 = 10
result = num1 / num2
print('result : {}'.format(result)) # result : 2.0
print('type of result : {}'.format(type(result))) # type of result : <class 'float'>
★코드 설명★
나눗셈의 결과는? : 항상 float (딱 떨어지는 수도 마찬가지)
[나머지 연산자와 몫 연산자 코드]
# 나눗셈 결과
num1 = 10
num2 = 3
result = num1 / num2
print('num1: {}, num2: {}, result: {}'.format(num1, num2, result))
# 결과 : num1: 10, num2: 3, result: 3.3333333333333335
# 나머지 연산자 %를 이용해 나머지를 구함
result = num1 % num2
print('num1: {}, num2: {}, result: {}'.format(num1, num2, result))
# 결과 : num1: 10, num2: 3, result: 1
# 나눗셈 결과 몫만 구함
result = num1 // num2
print('num1: {}, num2: {}, result: {}'.format(num1, num2, result))
# 결과 : num1: 10, num2: 3, result: 3
# divmod() 함수 사용
# 나머지와 몫을 한번에 구할 수 있음
result = divmod(num1, num2)
print('result: {}'.format(result))
print('몫: {}'.format(result[0]))
print('나머지: {}'.format(result[1]))
'''
결과result: (3, 1)
몫: 3
나머지: 1
'''
★코드 설명★
나눗셈 할때 나머지만 구하고 싶다 : 나머지 연산자 % 사용
나눗셈할 때 몫만 구하고 싶다 : // 사용
나머지와 몫을 동시에 구하고 싶다 : divmod() 함수 사용
result: (3, 1) → 튜플이라는 자료 구조이용(나중에 설명)
인덱스[0], 인덱스[1]의 값을 가져오는거임 그냥
[거듭제곱 연산자]
# 같은 수를 여러번 곱한 값을 구한다.
num1 = 2
num2 = 3
result = num1 ** num2
print('num1 : {}'.format(num1)) # num1 : 2
print('num2 : {}'.format(num2)) # num2 : 3
print('result : {}'.format(result)) # result : 8
num1 = 2
num2 = 5
result = num1 ** num2
print('num1 : {}'.format(num1)) # num1 : 2
print('num2 : {}'.format(num2)) # num2 : 5
print('result : {}'.format(result)) # result : 32
# pow()함수를 이용한 거듭제곱 구하기
import math # math 라이브러리 사용을 위해 import
print('2의 3제곱 %f' % math.pow(2, 3)) # 2의 3제곱 8.000000
print('3의 4제곱 %f' % math.pow(3, 4)) # 3의 4제곱 81.000000
★코드 설명★
n의 m승 한 결과를 구하는 거듭제곱을 할 때 연산자 **를 이용한다.
pow() 함수를 이용하여 거듭제곱을 편하게 구할 수 있다.
[제곱근 구하기]
n의 m 제곱근 공식 : n**(1/m)
# 2의 제곱근 구하기
result = 2 ** (1/2)
print('2의 제곱근 %f' % result) # 2의 제곱근 1.414214
print('2의 제곱근 %.2f' % result) # 2의 제곱근 1.41
# 2의 3제곱근 구하기
result = 2 ** (1/3)
print('2의 3제곱근 %f' % result) # 2의 3제곱근 1.259921
print('2의 3제곱근 %.2f' % result) # 2의 3제곱근 1.26
# 2의 4제곱근 구하기
result = 2 ** (1/4)
print('2의 4제곱근 %f' % result) # 2의 4제곱근 1.189207
print('2의 4제곱근 %.2f' % result) # 2의 4제곱근 1.19
# sqrt() 함수를 이용한 제곱근 구하기
import math
print('2의 제곱근 %f' % math.sqrt(2)) # 2의 제곱근 1.414214
print('2의 제곱근 %.2f' % math.sqrt(2)) # 2의 제곱근 1.41
print('3의 제곱근 %f' % math.sqrt(3)) # 3의 제곱근 1.732051
print('3의 제곱근 %.2f' % math.sqrt(3)) # 3의 제곱근 1.73
print('4의 제곱근 %f' % math.sqrt(4)) # 4의 제곱근 2.000000
print('4의 제곱근 %.2f' % math.sqrt(4)) # 4의 제곱근 2.00
★코드 설명★
제곱근 공식을 이용하면 2의 제곱근, 2의 3제곱근 등을 구할 수 있지만
sqrt() 함수를 이용하면 오직 '제곱근'만 구할 수 있다는 점을 유의해야한다.
그래도 꽤나 유용한 함수여서 자주 사용한다.
[나의 생각 정리]
- 기존에 알고 있는 내용을 복습할 수 있어서 유익했음
- 공식으로만 코드를 작성해도 좋으나 여러 함수를 알고 사용하면 편리함
[적용점]
- 코딩 테스트 문제에서도 산술 연산자를 자주 사용하므로 꼭 숙지해야 하는 내용이라 생각함
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”