1. 파이썬의 나누기 방법
파이썬은 여러 가지 나누기 방법이 존재한다.
- / 나누기 연산자
- % 나머지 연산자
- // 몫 연산자
첫 번째인 나누기 연산자는( / )
>>> 303 / 4
75.75
소수점 뒤까지 표시해주는 방법이다.
두 번째인 나머지 연산자는 ( % )
>>> 303 % 4
3
몫을 제외한 나머지 3을 반환한다.
세 번째인 몫 연산자는 ( // )
>>> 303 // 4
75
나누기 연산자의 뒤 소수점을 버리고 계산해준다.
기초적인 내용이고 Python 기본 책에 나오는 내용들이다.
하지만 음수의 나눗셈은 어떠할까?
2. 음수의 나누기
똑같은 숫자에 음수 부호를 붙여서 예시를 들어보겠다.
두 번째 나머지 연산자는 다루지 않겠다.
첫 번째 나누기 연산자( / )
>>> -303 / 4
-75.75
같은 결과에 음수 부호만 붙여서 결과가 나왔다.
세 번째 몫 연산자( // )
>>> -303 // 4
-76
이번에도 결과가 다르다.
-75를 예상했는데 -76이 나왔다.
왜 이런걸까?
3. 이유
결론부터 말하면 양수의 나눗셈을 자주 하다 보니 헷갈리게 돼서 그렇다
우리는 컴퓨터가 아닌 종이에 일반적인 나눗셈을 할 때
303 % 4 = 75.75라고 쓴다.
그리고 이것의 정수 부분은 75이고 그래프로 그려보면 다음과 같다.
75.75에서 정수 부분만 추출하면 75가 된다.
소수 부분인 0.75는 잘라내게 되는 것이다.
그렇게 왼쪽으로 절댓값이 써진다.
하지만, 음수의 경우에는 반대가 된다.
-75.75에서 정수 부분을 추출하면 무엇이 되었는가?
-76이 되었다.
그래프로 보면 똑같이 가까운 왼쪽 칸으로 이동한 것이다.
즉. 양수나 음수나 수가 작아진 것이다.
정리하면 다음과 같다.
>>> 303 / 4
75.75
>>> 303 // 4
75
>>> -303 / 4
-75.75
>>> -303 // 4
-76
그래서 음수를 나눗셈할 때 몫을 얻고 싶다면 단순히 음수 부호(-)를 넣어서 계산하면 예상과 다른 결론이 나올 것이다
해결 방법은 간단하다.
Python의 int() 내장 함수를 사용하면 된다.
int() 내장 함수는 정수부분만 잘라서 반환해 준다.
>>> 20 / 6
3.3333333333333333
하지만 int() 함수를 사용하면
>>> int(20 / 6)
3
정수부분만 잘려서 반환이 된다.
이 방법을 이용하면
>>> 303 // 4
75
>>> int(-303 / 4)
-75
이렇게 부호만 바꾼 원하는 값을 출력할 수 있게 된다.
이 아이디어를 사용한 문제가 있다.
후에 링크를 달아두겠다.
'[Python]' 카테고리의 다른 글
[Python] 파이썬의 삼항연산자 (0) | 2022.05.20 |
---|---|
[Python] count 메서드 (0) | 2022.05.18 |
[Python] in 연산자의 사용법, 예제 (0) | 2022.05.11 |
[Python] .isdigit(), .isalpha(), .join() 함수 (0) | 2022.03.20 |
[Python] input()보다 빠르게 입력 받기 - sys.stdin.readline() (0) | 2022.03.12 |