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: