1-Python - 分页

about

Python.3.6.8

本篇介绍对列表数据实现分页。

示例代码

class Pagination(object):


    def __init__(self, data_list, current_page=1, per_data_num=10):
        """
        初始化分页数据
        :param data_list: 数据列表
        :param current_page: 当前要查看的列表页
        :param per_data_num: 每页默认显式几条数据
        """
        self.data_list = data_list
        self.current_page = current_page
        self.per_data_num = per_data_num

    @property
    def start(self):
        return (self.current_page - 1) * self.per_data_num

    @property
    def end(self):
        return self.current_page * self.per_data_num

    def show(self):
        """ 切片展示数据 """
        # 切片后有结果,表示返回正常页码对应的内容,否则就是页码超范围
        result = self.data_list[self.start:self.end]
        if result:  # 正常分页
            print('展示第{}页内容:'.format(self.current_page))
        else:
            self.current_page = 1
            result = self.data_list[self.start:self.end]
            print('输入页码不在合法范围内,已自动返回首页内容:')
        for row in result:
            print(row)


def show_page():
    """ 分页查看器 """
    while True:
        cmd = input('输入要查看的页码或者输入n返回: ').strip()
        if cmd.upper() == 'N':
            break
        if cmd.isdigit():
            # 只要输入的是正整数,分页器都能处理
            Pagination(data_list, int(cmd)).show()
        else:
            print('请输入正整数!!!')


if __name__ == '__main__':
    data_list = ['video-{}'.format(i) for i in range(1, 996)]
    show_page()

结果演示:

输入要查看的页码或者输入n返回: 0
输入页码不在合法范围内,已自动返回首页内容:
video-1
video-2
video-3
video-4
video-5
video-6
video-7
video-8
video-9
video-10
输入要查看的页码或者输入n返回: 5
展示第5页内容:
video-41
video-42
video-43
video-44
video-45
video-46
video-47
video-48
video-49
video-50
输入要查看的页码或者输入n返回: 100
展示第100页内容:
video-991
video-992
video-993
video-994
video-995
输入要查看的页码或者输入n返回: 10000
输入页码不在合法范围内,已自动返回首页内容:
video-1
video-2
video-3
video-4
video-5
video-6
video-7
video-8
video-9
video-10
输入要查看的页码或者输入n返回: n

Process finished with exit code 0

that's all,see also:

python实现数据分页小练习

posted @ 2017-09-20 23:21  听雨危楼  阅读(1010)  评论(0编辑  收藏  举报