Python 정수 나눗셈: // 연산자 완벽 가이드
Updated on
정수 나눗셈(floor division)은 Python에서 두 숫자를 나누고 결과를 가장 가까운 정수로 내림하는 기본적인 산술 연산입니다. 부동 소수점 숫자를 반환하는 일반 나눗셈과 달리, // 연산자를 사용한 정수 나눗셈은 항상 결과보다 작거나 같은 가장 큰 정수를 반환합니다. 이 글에서는 Python 정수 나눗셈에 대해 알아야 할 모든 것을 안내합니다.
Python은 두 가지 나눗셈 연산자를 제공합니다: 일반 나눗셈 연산자 /와 정수 나눗셈 연산자 //. 각각을 언제 사용해야 하는지 이해하는 것은 효율적이고 버그 없는 Python 코드를 작성하는 데 필수적입니다.
Python Pandas DataFrame에서 코드 없이 데이터 시각화를 빠르게 만들고 싶으신가요?
PyGWalker는 시각화를 통한 탐색적 데이터 분석을 위한 Python 라이브러리입니다. PyGWalker (opens in a new tab)는 pandas dataframe(및 polars dataframe)을 시각적 탐색을 위한 Tableau 대안 사용자 인터페이스로 변환하여 Jupyter Notebook 데이터 분석 및 데이터 시각화 워크플로우를 단순화할 수 있습니다.
Python의 정수 나눗셈이란?
정수 나눗셈은 결과를 가장 가까운 정수로 내림하는 나눗셈 연산입니다. Python에서는 // 연산자를 사용하여 수행됩니다. "floor"(바닥)라는 용어는 항상 음의 무한대 방향으로 반올림하는 수학적 floor 함수에서 유래합니다.
간단한 예시입니다:
# 일반 나눗셈
print(7 / 2) # 출력: 3.5
# 정수 나눗셈
print(7 // 2) # 출력: 3보시다시피, 일반 나눗셈은 3.5를 반환하지만, 정수 나눗셈은 3을 반환합니다 - 이는 3.5보다 작거나 같은 가장 큰 정수입니다.
정수 나눗셈 문법
Python에서 정수 나눗셈의 문법은 간단합니다:
결과 = 피제수 // 제수여기서:
피제수는 나누어지는 숫자제수는 나누는 숫자결과는 나눗셈의 floor 값
다양한 데이터 타입에서의 정수 나눗셈
정수
두 피연산자가 모두 정수인 경우, 정수 나눗셈은 정수를 반환합니다:
print(10 // 3) # 출력: 3
print(15 // 4) # 출력: 3
print(20 // 5) # 출력: 4부동 소수점 숫자
적어도 하나의 피연산자가 float인 경우, 정수 나눗셈은 float를 반환합니다(하지만 여전히 내림됨):
print(10.0 // 3) # 출력: 3.0
print(10 // 3.0) # 출력: 3.0
print(10.5 // 3) # 출력: 3.0음수
음수에서의 정수 나눗셈은 까다로울 수 있습니다. 정수 나눗셈은 항상 음의 무한대 방향으로 반올림하며, 0 방향으로는 반올림하지 않는다는 것을 기억하세요:
print(7 // 2) # 출력: 3
print(-7 // 2) # 출력: -4 (-3이 아닙니다!)
print(7 // -2) # 출력: -4
print(-7 // -2) # 출력: 3이 동작을 이해하는 것이 중요합니다. -7 / 2 = -3.5이고, -3.5의 floor는 -3이 아니라 -4이기 때문입니다.
정수 나눗셈 vs 일반 나눗셈
| 연산 | 연산자 | 결과 타입 | 예시 | 출력 |
|---|---|---|---|---|
| 일반 나눗셈 | / | 항상 float | 7 / 2 | 3.5 |
| 정수 나눗셈 | // | int 또는 float | 7 // 2 | 3 |
# 비교
a = 17
b = 5
print(f"일반 나눗셈: {a} / {b} = {a / b}") # 3.4
print(f"정수 나눗셈: {a} // {b} = {a // b}") # 3정수 나눗셈의 실용적인 사용 사례
1. 페이지 또는 그룹 계산
전체 안에 몇 개의 완전한 그룹이 들어가는지 결정해야 할 때:
전체_항목 = 23
페이지당_항목 = 5
완전한_페이지 = 전체_항목 // 페이지당_항목
print(f"완전한 페이지: {완전한_페이지}") # 출력: 42. 단위 변환
정수 나눗셈은 단위 변환에 유용합니다:
전체_초 = 3725
시간 = 전체_초 // 3600
분 = (전체_초 % 3600) // 60
초 = 전체_초 % 60
print(f"{시간}시간 {분}분 {초}초") # 출력: 1시간 2분 5초3. 배열 인덱싱 및 위치 지정
그리드나 2D 배열로 작업할 때:
# 1D 인덱스를 2D 좌표로 변환
인덱스 = 17
열 = 5
행 = 인덱스 // 열
열_위치 = 인덱스 % 열
print(f"인덱스 {인덱스} -> 행: {행}, 열: {열_위치}") # 행: 3, 열: 24. 중간 인덱스 찾기
이진 검색 및 유사한 알고리즘에서 유용:
def 이진_검색(배열, 목표):
왼쪽, 오른쪽 = 0, len(배열) - 1
while 왼쪽 <= 오른쪽:
중간 = (왼쪽 + 오른쪽) // 2 # 중간 인덱스를 위한 정수 나눗셈
if 배열[중간] == 목표:
return 중간
elif 배열[중간] < 목표:
왼쪽 = 중간 + 1
else:
오른쪽 = 중간 - 1
return -1divmod() 함수
Python은 몫(정수 나눗셈)과 나머지를 한 번의 연산으로 반환하는 내장 함수 divmod()를 제공합니다:
몫, 나머지 = divmod(17, 5)
print(f"17 // 5 = {몫}") # 출력: 3
print(f"17 % 5 = {나머지}") # 출력: 2두 값이 모두 필요할 때 //와 %를 따로 호출하는 것보다 더 효율적입니다.
math 모듈을 사용한 정수 나눗셈
math.floor() 함수를 일반 나눗셈과 결합하여 정수 나눗셈을 구현할 수도 있습니다:
import math
결과1 = 7 // 2
결과2 = math.floor(7 / 2)
print(결과1) # 출력: 3
print(결과2) # 출력: 3두 방법 모두 같은 결과를 생성하지만, //가 더 간결하고 일반적으로 선호됩니다.
흔한 실수와 피하는 방법
실수 1: 정수 나눗셈과 절삭 혼동
# 정수 나눗셈은 음의 무한대 방향으로 반올림
print(-7 // 2) # 출력: -4
# 절삭(int 변환)은 0 방향으로 반올림
print(int(-7 / 2)) # 출력: -3실수 2: float 결과 잊기
# 하나의 피연산자가 float이면 결과도 float
print(type(10 // 3)) # <class 'int'>
print(type(10.0 // 3)) # <class 'float'>실수 3: 0으로 나누기
# 이것은 ZeroDivisionError를 발생시킵니다
try:
결과 = 10 // 0
except ZeroDivisionError:
print("0으로 나눌 수 없습니다!")성능 고려사항
정수 나눗셈은 일반적으로 일반 나눗셈 후 int() 또는 math.floor()를 사용하는 것보다 빠릅니다:
import timeit
# 정수 나눗셈 연산자
시간1 = timeit.timeit('7 // 2', number=1000000)
# 일반 나눗셈 + int()
시간2 = timeit.timeit('int(7 / 2)', number=1000000)
print(f"// 연산자: {시간1:.4f}초")
print(f"int(/) 방법: {시간2:.4f}초")FAQ
Python에서 /와 //의 차이점은 무엇인가요?
/ 연산자는 참 나눗셈을 수행하고 항상 float를 반환하는 반면, //는 정수 나눗셈을 수행하고 결과보다 작거나 같은 가장 큰 정수를 반환합니다. 예를 들어, 7 / 2는 3.5를 반환하지만, 7 // 2는 3을 반환합니다.
음수에서 정수 나눗셈은 어떻게 작동하나요?
정수 나눗셈은 항상 음의 무한대 방향으로 반올림합니다. 따라서 -7 // 2는 -3이 아니라 -4와 같습니다. -4가 -3.5보다 작거나 같은 가장 큰 정수이기 때문입니다.
일반 나눗셈 대신 정수 나눗셈을 언제 사용해야 하나요?
배열 인덱스 계산, 완전한 그룹 카운팅, 정수 산술이 필요한 알고리즘 구현 등 정수 결과가 필요하고 부동 소수점 정밀도 문제를 피하고 싶을 때 정수 나눗셈을 사용하세요.
결론
// 연산자를 사용한 Python 정수 나눗셈은 가장 가까운 정수로 내림하는 정수 나눗셈을 수행하는 강력한 도구입니다. 특히 음수와 부동 소수점 피연산자에서의 동작을 이해하는 것은 올바른 Python 코드를 작성하는 데 중요합니다. 알고리즘 구현, 단위 변환, 배열 인덱스 작업 등 어떤 작업을 하든 정수 나눗셈은 Python 도구 키트의 필수적인 연산입니다.
