## 점프 투 파이썬 - 파일 읽고 쓰기
https://github.com/integerJI/blahblah_jeong
## 점프 투 파이썬 - 게시판 페이징하기
# 문제
A 씨는 게시판 프로그램을 작성하고 있다. 그런데 게시물의 총 건수와 한 페이지에 보여 줄 게시물 수를 입력으로 주었을 때 총 페이지 수를 출력하는 프로그램이 필요하다고 한다.
# 페이징이란?
게시판의 페이지 수를 보여 주는 것을 "페이징"한다고 부른다.
# 게시판 예시
게시물의 총 건수(m) 페이지당 보여줄 게시물 수(n) 총 페이지 수
5 10 1
15 10 2
25 10 3
30 10 3
A씨가 필요한 프로그램을 만들기 위해 입력값과 결괏값이 어떻게 나와야 하는지 먼저 살펴보자. 게시물의 총 건수가 5이고 한 페이지에서 보여 줄 게시물 수가 10이면 총 페이지 수는 당연히 1이 된다. 만약 게시물의 총 건수가 15이고 한 페이지에서 보여 줄 게시물 수가 10이라면 총 페이지 수는 2가 될 것이다.
# 설계
1. 함수 이름은? getTotalPage
2. 입력 받는 값은? 게시물의 총 건수(m), 한 페이지에 보여줄 게시물 수(n)
3. 출력하는 값은? 총 페이지수
1. 총 건수(m)를 한 페이지에 보여 줄 게시물 수(n)로 나누고 1을 더하면 총 페이지 수이다.
총 페이지 수 = (총 건수 / 한 페이지당 보여 줄 건수) + 1
2. 총 페이지 수가 구해지는지 확인.
(m을 n으로 나눌 때 소수점 아래 자리를 버리기 // 연산자 사용)
def getTotalPage(m, n):
return m // n + 1
print(getTotalPage(5, 10)) # 1 출력
print(getTotalPage(15, 10)) # 2 출력
print(getTotalPage(25, 10)) # 3 출력
print(getTotalPage(30, 10)) # 4 출력
첫 번째, 두 번째, 세 번째 케이스는 공식에 맞게 결과가 출력됐지만
네 번째 케이스는 총 건수가 30이고 한 페이지에 보여 줄 건수가 10인데
4가 출력되어 실패했다.
총 건수가 30이고 한 페이지에 보여 줄 건수가 10이라면 총 페이지 수는 3이되어야 한다.
3. 실패 케이스는 총 게시물 수와 한 페이지에 보여 줄 게시물 수를 나눈 나머지 값이 0이 될 때 발생하는것 같다.
def getTotalPage(m, n):
if m % n == 0:
return m // n
else:
return m // n + 1
print(getTotalPage(5, 10))
print(getTotalPage(15, 10))
print(getTotalPage(25, 10))
print(getTotalPage(30, 10))
나누었을 때 나머지가 0인 경우는 나누기의 몫만 돌려주고 그 이외의 경우에는 1을 더하여 돌려주도록 변경했다.
프로그램을 실행해 보면 모든 케이스가 원하던 결과를 출력함을 확인할 수 있다.
---
페이징은 장고 실습하면서 해봐야겠다.
'코딩공부 > 점프 투 파이썬' 카테고리의 다른 글
## 점프 투 파이썬 - 탭을 4개의 공백으로 바꾸기 (0) | 2020.03.08 |
---|---|
## 점프 투 파이썬 - 간단한 메모장 만들기 (2) | 2020.02.29 |
## 점프 투 파이썬 - 3과 5의 배수 합하기 (0) | 2020.02.25 |
## 점프 투 파이썬 - 내가 프로그램을 만들 수 있을까? (0) | 2020.02.21 |
## 점프 투 파이썬 - 외장 함수 ( 1 ) (0) | 2020.02.11 |