파이썬의 divmod() 내장 함수로 나눗셈하기
이번 포스팅에서는 파이썬에서 연산자를 이용해서 나눗셈을 하는 방법에 대해서 간단히 알아보고, 몫과 나머지를 동시에 구할 때 사용하는 divmod()
내장 함수에 대해서도 알아보겠습니다.
나누기 연산자
파이썬은 특이하게도 2가지 나누기 연산자를 제공하는데요.
첫 번째는 실수 나누기 연산자인 /
이고, 두 번째는 정수 나누기 연산자인 //
입니다.
이 두 종의 나누기 연산자는 나머지가 없는 경우에는 동일한 값을 반환하는데요.
>>> 8 / 2
4.0
>>> 8 // 2
4
하지만 엄밀히 얘기하면 이 두 값의 자료형(data type)은 각각 실수와 정수로 차이가 있습니다.
그럼 나눗셈 결과에 나머지가 있는 경우에는 어떨까요?
>>> 8 / 3
2.6666666666666665
8 // 3
>>> 2
이번에는 자료형 뿐만 아니라 반환값에도 매우 유의미한 차이를 볼 수가 있는데요.
/
연산자는 실수로 나누기를 하여 소수부를 보존하는 반면에 //
연산자는 정수로 나누기를 하여 소수부를 날려 버리고 정수부만 반환하는 것을 볼 수 있습니다.
실제 응용 프로그램에서 나눗셈을 할 때는 이 두 가지 연산자 중에서 어떤 것을 써야할지 명확히 알고 있어야 하겟죠? 이 둘을 무분별하게 혼용한다면 특히 금융권 시스템에서는 매우 곤란한 일이 발생할 수도 있을 것입니다.
나머지 연산자
파이썬에서 나머지를 구할 때는 다른 프로그래밍 언어와 비슷하게 흔히 모듈로(modulo) 연산자라고 불리는 %
를 사용합니다.
예를 들어, 8
을 2
로 나눈 나머지는 0
이 되겠죠?
>>> 8 % 2
0
8
을 3
으로 나눈 나머지는 2
가 될 것입니다.
>>> 8 % 3
2
divmod() 함수
나눗셈을 하다보면 간혹 몫과 나머지를 동시에 구하고 싶을 때가 있는데요.
이럴 때 흔히 생각할 수 있는 방법이 동일한 두 개의 수를 대상으로 //
연산자와 %
연산자를 각각 호출하는 것입니다.
>>> (8 // 2, 8 % 2)
(4, 0)
>>> (8 // 3, 8 % 3)
(2, 2)
하지만 파이썬에 내장된 divmod()
함수를 사용하면 한 방에 이 두 개의 작업을 진행할 수 있습니다.
>>> divmod(8, 2)
(4, 0)
>>> divmod(8, 3)
(2, 2)
divmod()
함수는 두 개의 숫자를 인자로 받아, 첫번 째 숫자를 두번 째 숫자로 나눈 몫과 나머지를 튜플(tuple) 형태로 반환하는데요.
결국 divmod()
함수가 하는 일은 다음과 같이 일반 연산자를 사용하여 나타낼 수 있겠습니다.
divmod(x, y) = (x // y, x % y)
전체 코드
본 포스팅에서 제가 작성한 전체 코드는 아래에서 직접 확인하고 실행해보실 수 있습니다.
마치면서
이상으로 파이썬의 나누기 연산자와 나머지 연산자, 그리고 divmod()
내장 함수에 대해서 살펴보았습니다.
파이썬으로 나눗셈이 필요하실 때 유용하게 활용하실 수 있으셨으면 좋겠습니다.