파이썬 나누기 나머지 - paisseon nanugi nameoji


29.3 연습문제: 몫과 나머지를 구하는 함수 만들기

다음 소스 코드를 완성하여 xy로 나누었을 때의 몫과 나머지가 출력되게 만드세요.

practice_function.py

x = 10
y = 3
 
                                 
                                 
 
quotient, remainder = get_quotient_remainder(x, y)
print('몫: {0}, 나머지: {1}'.format(quotient, remainder))

실행 결과

몫: 3, 나머지: 1

정답

def get_quotient_remainder(a, b):
    return a // b, a % b

해설

get_quotient_remainder 함수에 xy를 넣어서 몫과 나머지를 구하고 있습니다. 먼저 get_quotient_remainder 함수는 값을 두 개 받으므로 def get_quotient_remainder(a, b):와 같이 만들어줍니다. 그리고 함수 안에서 return으로 ab로 나누었을 때 몫과 나머지를 반환해주면 됩니다.

여기서 몫은 정수로 나와야 하므로 버림 나눗셈 연산자 //을 사용하고, 나머지는 나머지 연산자 %를 사용해야 합니다. 또는, int(a / b)와 같이 나눗셈 연산자 /를 사용한 뒤에 int로 변환해도 됩니다. 특히 return으로 값을 두 개 반환해야 하므로 각 반환값은 콤마로 구분해줍니다.


파이썬을 파이썬답게

정수를 나눈 몫과 나머지 구하기 divmod

  • 다른 언어에서는 몫과 나머지를 따로 구한다.

>>> print(7 // 3)
2
>>> print(7 % 3)
1

  • 파이썬에서는 divmod와 unpacking을 사용해 한 번에 구할 수 있다.

>>> print(*divmod(7, 3))
2 1

  • divmod는 작은 숫자를 다룰 때는 전자보다 느리지만, 큰 숫자를 다룰 때는 더 빠르다.

Tags: python

  • Next Post →

1. 파이썬 몫을 구하기

파이썬에서 몫을 구하는데 두 가지 방법이 있다.

1. / 슬래시 1개를 사용해서 소숫값이 나오는 방법

# 10 나누기 3

a = 10 / 3
print(a) 		#3.33333

2.  // 슬래시 2개를 사용해서 정수값이 나오는 방법

# 10 나누기 3

a = 10 // 3
print(a) 		#3

2. 파이썬 나머지 구하기

파이썬에서 나머지를 구하는데 퍼센트 % 사용해서 값을 구한다.

# 10 나머지 3

c = 10 % 3
print(c) 		# 1

파이썬의 내장함수 중 divmod() : 매개변수로 두개의 숫자를 입력받아 몫과 나머지를 튜플로 반환한다.

divmod(a, b)

divmod(10, 3) 이라 할때, 10을 3으로 나누고 (= 10 / 3) 그 몫인 3과 나머지인 1튜플 형식으로 (3, 1)로 반환 하는 함수

a = divmod(10, 3)
print(a)         # (3, 1)

b = divmod(7, 4)
print(b)          # (1, 3)

c, d = *divmod(10, 3)
print(c)         # 3
print(d)         # 1

무조건 divmod를 사용하는 게 좋은 방법은 아니다.

가독성이나, 팀의 코드 스타일에 따라서, a//b, a%b와 같이 쓸 때가 더 좋을 수도 있다. 또한, divmod는 작은 숫자를 다룰 때는 a//b, a%b 보다 느리다. 대신, 큰 숫자를 다룰 때는 전자가 후자보다 더 빠르다.

Stack Overflow : https://stackoverflow.com/questions/30079879/is-divmod-faster-than-using-the-and-operators

안녕하세요. BlockDMask 입니다.

오늘은 간단하게 파이썬에서 몫을 구하는 방법에 대해서 짧게 적어보려합니다.

정말간단해요.

<목차>

1. 파이썬에서 나눗셈 하기

2. 파이썬 나눗셈의 몫을 구하기

3. 파이썬 나눗셈의 나머지 구하기

4. 파이썬 divmod 함수로 몫과 나머지 둘다 가지고 오기

1. 파이썬 나눗셈


파이썬 나눗셈을 하는데 사용하는 기호는 슬래쉬 ( / ) 하나 입니다.

# 10 나누기 3의 나눗셈을 구하라 a = 10 / 3 print(a)

결과값은 3.33333 이 나옵니다.

몫과 나머지가 그대로 다 나오죠?

2. 파이썬 나눗셈의 몫 구하기


파이썬 나눗셈에서 을 구하는데 사용하는 기호는 슬래시 두개 ( // )입니다.

# 10 나누기 3의 몫을 구하라 b = 10 // 3 print(b)

결과 값은 3이 나옵니다.

10 / 3 의 값은 3.33333... 인데 그 중 몫은 소수점을 제외한 3이 됩니다.

3. 파이썬 나눗셈의 나머지 구하기


파이썬에서 나머지를 구하는 기호는 퍼센트 (%) 기호 입니다.

# 10 나누기 3의 나머지를 구하라 c = 10 % 3 print(c)

결과 값은 1이 나옵니다.

10 을 3으로 나누면 몫이 3이고 나머지는 1이기 때문에 1이 나오게 됩니다.


파이썬의 내장함수 중에 divmod 라는 함수가 존재합니다.

이 함수는 매개변수로 숫자를 두개 입력 받아서 몫과 나머지를 튜플 형태로 반환하는 함수 입니다.

함수의 모양을 보면 아래와 같이 생겼습니다.

divmod(a, b)

divmod 함수는 매개변수로 받은 a를 b로 나눕니다. 그리고 그 몫과 나머지를 튜플(tuple) 데이터 타입으로 반환합니다.

예를 들어

divmod(10, 3) 이라 할때, 10을 3으로 나누고 (= 10 / 3) 그 몫인 3과 나머지인 1튜플 형식으로 (3, 1)로 반환 하는 함수 라는 것 입니다

실제 코드로 한번 볼까요?

# 파이썬 divmod 예제 1 a = divmod(10, 3) print(a)         # (3, 1) 반환  # 파이썬 divmod 예제 2 b = divmod(7, 4) print(b)          # (1, 3) 반환

이렇게 divmod 함수를 이용하면 편하게 몫과 나머지를 구할 수 있습니다.

주의해야할게 하나 남았습니다.

# 파이썬 divmod 예제 3 : 주의. c = divmod(44, 0) print(c)         # error

당연하겠지만 divmod의 두번째 인자에는 0을 집어 넣으면 에러가 발생합니다

에러 이름과 설명 - "ZeroDivisionError: integer division or modulo by zero"divmod의 두번째 인자로 0을 넣지 않도록 주의 하면서, divmod를 유용하게 사용하면 좋을것 같습니다.

이상으로 파이썬 나누기, 몫 구하기, 나머지 구하기, divmod로 몫과 나머지를 튜플로 한번에 구하는 방법까지 알아보았습니다. 감사합니다.