Python 如何使用给定列表创建分页函数

Python 如何使用给定列表创建分页函数,python,python-3.x,list,while-loop,pagination,Python,Python 3.x,List,While Loop,Pagination,我必须创建一个分页函数询问2个参数数组和页码 我试图解决列表中的任何项目,我遇到了一些问题,这里是一个代码 def paginator(array,page_number): if 0 < page_number < len(array): obj_per_page = len(array)//page_number objects = len(array) count = 0 start = 0

我必须创建一个
分页函数
询问
2个参数
数组和页码

我试图解决列表中的任何项目,我遇到了一些问题,这里是一个代码

def paginator(array,page_number):
    if 0 < page_number < len(array):
        obj_per_page = len(array)//page_number
        objects = len(array)
        count = 0
        start = 0
        while objects > 1:
            count += 1
            objects -= len(array)//page_number
            object_available = array[start:obj_per_page]
            print(f'this is page {count} have object {object_available}')
            start = obj_per_page 
            obj_per_page += len(array)//page_number
    
    elif len(array) <= page_number:
        for i in array:
            print(f'thi is page {i} have object [{i}]')
 
    else:
        print(array)
 
 
list = [1,2,3,4,5,6]
page_number = 3
 
paginator(list,page_number)
`此代码仅在以下情况下提供预期输出:

如果len(list)可被页码整除 如果页码为0或1 如果页码大于等于len(列表)`

错误

假设len(list)是9,页码是(2,4,5,6,7,8)中的任意一个 9%(2,4,5,6,7,8)的余数为(1,1,4,3,2,1),因此缺少的项目数等于余数

我想要什么

如果len(list)是9,page_编号是4,我希望输出如下内容

this is page 1 have object [1, 2, 3]
this is page 2 have object [4, 5]
this is page 3 have object [6, 7]
this is page 4 have object [8, 9]
如果你们有其他解决方案,请帮我分享
我试图解释我的问题抱歉语法不好

我已经更新了数组索引,以便在第一页附加提醒对象

def paginator(objects, total_pages):
    total_objects = len(objects)
    if 0 < total_pages < total_objects:
        obj_per_page = total_objects // total_pages
        reminder_objects = total_objects - (obj_per_page * total_pages)
        first_page = True
        i = 0
        page_number = 1
        while total_objects > 0:
            current_page_total_objects = obj_per_page
            if first_page and reminder_objects > 0:
                current_page_total_objects = obj_per_page + reminder_objects
            print(f'this is page {page_number} have object {objects[i:i+current_page_total_objects]}')
            page_number += 1
            first_page = False
            i += current_page_total_objects
            total_objects -= current_page_total_objects

    elif total_objects <= total_pages:
        for i in objects:
            print(f'this is page {i} have object [{i}]')
    else:
        print(objects)
 
 
ar = [1,2,3,4,5,6,7,8,9]
page_number = 4
注意:我已经重命名了几个变量,以使其更有意义

def paginator(array, page_number):
    n, remainder = page_number, len(array) % page_number
    curr, idx, old_idx = 1, 0, 0
    while n + remainder != 0:
        idx += len(array) // page_number + bool(remainder)
        print(f"this is page {curr} have object {array[old_idx:idx]}")
        n -= 1
        remainder = max(remainder - 1, 0)
        curr += 1
        old_idx = idx


lst = list(range(1, 10))
page_number = 4

paginator(lst, page_number)
印刷品:

这是第1页,有对象[1,2,3]
这是第2页,有对象[4,5]
这是第3页,有对象[6,7]
这是第4页,有对象[8,9]
this is page 1 have object [1, 2, 3]
this is page 2 have object [4, 5]
this is page 3 have object [6, 7]
this is page 4 have object [8, 9]
def paginator(array, page_number):
    n, remainder = page_number, len(array) % page_number
    curr, idx, old_idx = 1, 0, 0
    while n + remainder != 0:
        idx += len(array) // page_number + bool(remainder)
        print(f"this is page {curr} have object {array[old_idx:idx]}")
        n -= 1
        remainder = max(remainder - 1, 0)
        curr += 1
        old_idx = idx


lst = list(range(1, 10))
page_number = 4

paginator(lst, page_number)