Windows · Python 3.12.4. 본문의 첫 예제를 실행하여 표준 출력과 예상 결과가 일치함을 확인했습니다. 연습문제의 모든 입력을 검증한 것은 아닙니다.
이 글의 순서 4개 단락
간식 17개를 5명에게 똑같이 나누어 주려면 한 사람에게 몇 개씩 주고, 몇 개가 남을까요? Python 3.12에서 몫과 나머지를 계산하고 결과를 문장으로 출력해 보겠습니다.
계산에 쓰는 연산자
숫자를 더할 때는 +, 뺄 때는 -, 곱할 때는 *, 나눌 때는 /를 사용합니다. 예를 들어 7 + 2는 9, 7 - 2는 5, 7 * 2는 14입니다. 괄호로 계산 순서를 묶을 수도 있습니다. (7 + 2) * 3은 27입니다.
/는 나눗셈 결과를 실수로 돌려줍니다. 예를 들어 17 / 5는 3.4, 10 / 5는 2.0입니다. 반면 정수를 양의 정수로 나눌 때 //는 소수 부분을 제외한 몫을, %는 나머지를 구합니다. 따라서 17 // 5는 3, 17 % 5는 2입니다.
간식을 똑같이 나누기
다음 예제는 준비된 간식의 수와 사람 수를 변수에 저장합니다. 키보드로 입력할 값은 없습니다.
snacks = 17
people = 5
per_person = snacks // people
remaining = snacks % people
print(f"한 사람당 {per_person}개")
print(f"남는 간식: {remaining}개")
print(f"나누어 준 간식: {per_person * people}개")

예상 출력은 다음과 같습니다.
한 사람당 3개
남는 간식: 2개
나누어 준 간식: 15개
snacks // people은 17을 5로 나눈 몫인 3을 구하고, snacks % people은 나머지 2를 구합니다. 한 사람당 3개씩 5명에게 주므로 나누어 준 간식은 3 * 5, 즉 15개입니다. 여기에 남은 2개를 더하면 처음의 17개가 됩니다.
문자열의 여는 따옴표 앞에 f를 붙이면 f-string이 됩니다. 중괄호 안에 변수나 계산식을 넣으면 그 결과가 문자열에 들어갑니다. 예를 들어 {per_person}은 3으로, {per_person * people}은 15로 표시됩니다.
흔한 실수와 경계 조건
/와//를 혼동하지 마세요.17 / 5는3.4이고17 // 5는3입니다. 간식을 통째로 나눠 주는 이 예제에는 몫이 필요합니다.- f-string에서 따옴표 앞의
f를 빠뜨리면 중괄호 안의 이름이 계산되지 않고 글자 그대로 출력됩니다. - 사람 수가
0이면/,//,%모두ZeroDivisionError를 발생시킵니다. 나누기 전에 사람 수가 0보다 큰지 확인해야 합니다. 이 예제는 사람 수를 양의 정수로 정해 두었습니다. - 간식이
0개이고 사람이 5명이면 몫과 나머지는 모두0입니다. 간식이 사람보다 적어도 같은 방식으로 계산합니다. 예를 들어3 // 5는0,3 % 5는3입니다. - 음수에
//를 쓰면 결과가 0 방향으로 잘리는 것이 아니라 더 작은 정수 방향으로 내려갑니다. 예를 들어-7 // 3은-3입니다. 간식 수처럼 개수를 나타낼 때는 음수가 아닌 값을 사용합니다.
연습: 분을 시간과 분으로 바꾸기
총 135분이 몇 시간 몇 분인지 출력해 보세요. 한 시간은 60분입니다. //로 시간 수를, %로 남은 분을 구하고 f-string으로 한 줄에 표시합니다.
풀이:
total_minutes = 135
hours = total_minutes // 60
minutes = total_minutes % 60
print(f"{hours}시간 {minutes}분")
예상 출력은 2시간 15분입니다. 135를 60으로 나누면 몫이 2이고 나머지가 15이므로, 두 시간과 15분으로 나눌 수 있습니다.
참고 자료: Python 3.12 공식 튜토리얼 — 숫자와 연산, Python 3.12 공식 튜토리얼 — 출력 형식.
CHECK THE SOURCE
참고한 공식 문서
기능 설명은 위 문서를 참고했으며, 예제의 입력·결과와 한계는 본문에 따로 기록했습니다.