본문 바로가기
Study/Python study

[Python(파이썬)] 몫, 나머지 구하기( /, //, %, divmod() )

by 파크영 2021. 7. 2.
  • 나눗셈 

나눗셈 기호 -> 슬래쉬 1개 '/'

>>> 8 / 2
4.0
# 나누어 떨어지지 않으면 반올림 된다.
>>> 14 / 3
4.666666666666667
>>> 15 / 5
3.0
>>> 21 / 8
2.625

 

  • 나눗셈의 몫

나눗셈의 기호 -> 슬래쉬 2개 '//'

>>> 8 // 2
4
>>> 14 // 3
4
>>> 15 // 5
3
>>> 21 // 8
2

 

  • 나눗셈의 나머지

나눗셈의 나머지 기호 -> 퍼센트 '%'

>>> 8 % 2
0
>>> 14 % 3
2
>>> 15 % 5
0
>>> 21 % 8
5

 

  • divmod(a, b) 

매개변수 숫자 a, b를 입력 받아 몫과 나머지를 튜플(tuple) 형태로 반환하는 함수

>>> divmod(8, 2)
(4, 0)
>>> divmod(14, 3)
(4, 2)
>>> divmod(15, 5)
(3, 0)
>>> divmod(21, 8)
(2, 5)

 

divmod()의 결과인 튜플은 인덱스로 접근이 가능하다. 

>>> test = divmod(21, 8)
>>> test
(2, 5)
>>> test[0] # 몫
2
>>> test[1] # 나머지
5

 

튜플은 값을 '=' 사용하여 변경할 수 없으므로 list로 변경 후 값을 변경하는 방법이 있다. 

>>> test = divmod(21, 8)
>>> test
(2, 5)

>>> test[1] = 3
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    test[1] = 3
TypeError: 'tuple' object does not support item assignment

>>> test = list(test)	# 튜플 test를 리스트로 변환
>>> test
[2, 5]
>>> test[1] = 3 	# 인덱스 1번에 3으로 값 변경
>>> test = tuple(test)	# 리스트 test를 다시 튜플로 변환
>>> test
(2, 3)

 

  • divmod 함수 주의 할 점!!
>>> divmod(13, 0)

Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    divmod(13, 0)
ZeroDivisionError: integer division or modulo by zero

0 으로 나눌 수 없기 때문에 divmod에서 두번째 매개변수에 '0'을 입력하면 error 발생

댓글