파이썬으로 숫자 데이터를 다룰 때, 산술 연산들을 많이 사용한다.
사칙연산
더하기, 빼기, 나누기, 곱하기를 사칙연산이라고 한다. 숫자 데이터를 다룰 때 기본적으로 사용하게 되는 연산이다. 파이썬에서 더하기, 빼기, 나누기, 곱하기는 각각 +, -, /, * 문자를 사용한다.
예를 들어보자.
num1 = 3
num2 = 2
print(num1 + num2) # 더하기
print(num1 - num2) # 빼기
print(num1 * num2) # 곱하기
print(num1 / num2) # 나누기
# 5
# 1
# 6
# 1.5
더하기와 빼기는 우리가 흔히 사용하는 문자여서 어렵지는 않는데, 곱하기가 '×' 문자가 아닌 '*' 문자를 사용한다는 점과 나누기 역시 '÷' 문자가 아닌 '/' 문자를 사용한다는 점이 헷갈릴 수 있다.
몫과 나머지 구하기
사칙연산의 나누기는 결과를 소수점으로 계산해서 반환해준다. 위의 예제에서 3을 2로 나누면 1.5라는 소수점 결과가 출력된다.
하지만 나누기를 할 때, 몫과 나머지를 계산하고 싶은 경우가 있다. 파이썬은 '퍼센트(%)' 문자와 '슬래시 두개 (//)'문자를 이용해서 나머지와 몫을 구할 수 있다.
예를 들어보자.
num1 = 3
num2 = 2
print(3 % 2) # 나머지 연산
print(3 // 2) # 몫 구하기
# 1
# 1
3을 2로 나눈 몫은 1이고, 나머지도 1이다.
파이썬의 내장 함수 중에 divmod() 함수가 있다. 이 함수는 두 개의 숫자를 입력받아서 몫과 나머지를 튜플 형태로 리턴해준다.
(quotient, remainder) = divmod(10, 3)
print(quotient)
print(remainder)
# 3
# 1
divmod() 함수는 첫 번째 인자로 받은 숫자를 두 번째 인자로 받은 숫자로 나눈다. 그래서 나온 몫(quotient)을 튜플의 첫 번째 값으로 나머지(remainder)를 두 번째 값으로 리턴한다.
ZeroDivisionError
파이썬을 비롯한 프로그래밍 언어에서 나누기를 할 때 주의해야하는 것이 Divided by Zero다. 즉, 0으로 나누려고 시도하는 경우다.
a = 10
b = 0
print(a/ b)
이런 종류의 코드가 실행되었다고 하자. 그러면
Traceback (most recent call last):
File "./test.py", line 6, in <module>
print(a/ b)
ZeroDivisionError: division by zero
이런 에러가 발생한다. 0으로 나누려고 했다는 에러다. 0으로 나누면 무한대인데 프로그래밍 언어에서는 이를 허용하지 않는다.
얼핏보면 누가 바보같이 0으로 나누려고 할까 싶다. 하지만 나누기 연산은 변수 두 개를 이용하고, 변수의 값은 코드의 다른 부분에서 받아오는 경우가 많다. 이 때, 의도하지 않았지만 분모로 사용되는 변수의 값이 0으로 설정되어 이런 코드로 들어오게 되는 경우가 많은데 이럴 때 자주 만나게 되는 에러다. (대부분 숫자 데이터의 초기값이 0이라서...)
파이썬 절대값 (abs) 구하기
파이썬에서 숫자 데이터를 다룰 때 많이 사용하는 함수가 abs() 함수다. abs() 함수는 숫자의 절대값(absolute value)을 구해주는 함수다. abs() 함수는 파이썬에 내장(built-in)되어 있는 함수다.
예를 들어보자.
print(abs(10))
print(abs(-10))
print(abs(-1.1))
print(abs(1.23))
# 10
# 10
# 1.1
# 1.23
양수를 넣으면 양수가 그대로 나오고, 음수를 넣으면 부호만 바뀐 절대값 양수가 나온다.
댓글