[Python] 맨날 헷갈리는 나누기 관련 연산 기호 - /, //, %
"저만 그런거 아니죠?"
맞춰보세요
print(10 / 3)
print(10 // 3)
print(10 % 3)
print(10 / 3)
print(10 // 3)
print(10 % 3)
"출력값은 뭘까~요?"
print(10 / 3) # 3.3333333333333335
print(10 // 3) # 3
print(10 % 3) # 1
"맞추셨나요?"
나누기 연산자의 역할은 다음과 같습니다
-
/: 나누기
-
//: 나누기 연산 후 소수점 이하의 수를 버리고, 정수 부분의 수만 구함 (몫)
-
%: 나누기 연산 후 몫이 아닌 나머지를 구함
나누기 연산자 주의점
다음 문제를 풀어보겠습니다.
다음의 방정식을 해결하는 프로그램을 구현 하세요. x값을 구해야 합니다.
- ax = b
결과 출력물은 다음과 같아야 합니다.
Input 으로 주어진 a 와 b 값으로 위의 방정식을 충족하는 단 하나의 정수가 존재한다면 해당 정수를 출력하면 됩니다
만일 a 와 b 값으로 위의 방정식을 충족하는 정수가 없다면 "No Solution"을 출력해주세요.
a 와 b 값으로 위의 방정식을 충족하는 정수가 많다면 "Many Solutions"을 출력해주세요.
- Hint:
a 나 b 는 0이 될 수 있습니다.- Examples:
만일 a = 1, b = -2 라면 결과값으로 -2가 출력이 되어야 합니다.
만일 a = 2, b = -1 라면 결과값으로 "No Solution"이 출력이 되어야 합니다
작고 소중한 첫 답안
logic
- a, b가 같다면 해가 무수히 많다(부정)
- 변수 하나만 0이라면 해는 없다(불능)
a = int(input("첫번째 정수"))
b = int(input("두번째 정수"))
if a == b:
print("Many Solutions")
else:
if (a == 0 and b != 0) or (a != 0 and b == 0):
print("No Solution")
else:
print(b / a)
"답일까요?"
테스트 케이스 중 a = 1, b = -2 라면 결과값으로 -2가 출력해야 하지만 -2 / 1의 결과값으로는 -2.0이기 때문에 오답처리되었습니다.
나누기 연산(/) 시 결과가 float 자료형(Data Type)으로 처리됩니다.
수정 답안
- 결과값을 int 자료형으로 처리해야했고
- 나눌 수 있는 하나의 정수가 존재한다면 출력 해야한다는 조건이 추가됬어야 했습니다
따라서 다음과 같이 조건을 수정했습니다.
a = int(input("첫번째 정수"))
b = int(input("두번째 정수"))
if a == b:
print("Many Solutions")
else:
if (a == 0 and b != 0) or (a != 0 and b == 0) or (type(int) != type(b / a) and (b / a > 0)): # 나눈 값이 양수 일때, int형이 아니라면
print("No Solution")
else:
print(int(b / a)) # int 함수로 형변환
당연한 이유였던 것...
나누기 연산 후 float 자료형으로 처리되는 것은 생각해보면 당연한 결과였습니다
나누기 연산을 한다면 결과값은 대부분 소수가 붙어있을 것이다(실수)
아무 수 2개나 불러보시길 바랍니다
그리고 나눠보세요!
>>> 76 / 0.8
95.0
즉, 숫자의 나누면 대부분 실수일 것이므로
정수의 결과가 나온다 하더라도 float 자료형으로 처리되는 겁니다!
Author And Source
이 문제에 관하여([Python] 맨날 헷갈리는 나누기 관련 연산 기호 - /, //, %), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jiggyjiggy/Python-맨날-헷갈리는-나누기-관련-연산-기호-저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)