python 实现分类页

"""
1. 编写一个分页【显示类】,初始化传入【记录总数】。
   希望可以通过【设置每页记录数】和【页码】,可以显示当前页的信息。
   其中每页记录数与页码使用property实现 set/get。
   注意,如果页码设置不正确(如<1或者>最大页码),提示错误信息。设计方法能够返回当前页显示的记录区间。
   Page(20)
   pagesize=5
   一共应该有4页
   currenPage=3
   show可以显示第3页的信息
   这是第11-15条记录。。。。
"""
class Page:
   def __init__(self,total): #total总记录数
      self.total=total  #total总记录数
      self.__pagesize=None  #每页显示记录数
      self.__currentpage=None  #当前页码
      self.maxpage=None   #最大页码
   def getCurrentpage(self):
      return self.__currentpage
   def setCurrentpage(self,currentpage):
      if self.__pagesize:
         maxpage=self.total%self.__pagesize
         if maxpage==0:
            maxpage=self.total//self.__pagesize
         else:
            maxpage=self.total//self.__pagesize+1
         self.maxpage=maxpage

         if currentpage<1 or currentpage>maxpage:
            print("没有%s"%self.currentpage)
            if currentpage<1:
               self.__currentpage=1
            else:
               self.__currentpage=maxpage
         else:
            self.__currentpage = currentpage
      else:
         print("请先设置每页记录数")
   def getPagesize(self):
      return self.__pagesize
   def setPagesize(self,pagesize):
      if pagesize>0:
         self.__pagesize=pagesize
      else:
         print("输入有误")

   def showCurrentpage(self):
      if self.getCurrentpage() and self.getPagesize():
         print(f"当前是第{self.getCurrentpage()}页。")
         print("当前是第%s页。"%self.getCurrentpage())
         start=(self.getCurrentpage()-1)*self.getPagesize()+1  # 2*5+1=11   开始条数=(当前页-1) * 每页显示的记录数 + 1
         end=self.getCurrentpage()*self.getPagesize()  #3*5=15    结束条数 = 当前页 * 每页显示的记录数

         if self.getCurrentpage()==self.maxpage:
            end=self.total

         for i in range(start,end+1):
            print(f"这是第{i}条记录")
   pagesize=property(getPagesize,setPagesize)
   currentpage=property(getCurrentpage,setCurrentpage)

p=Page(20)
p.pagesize=5
p.currentpage=3

p.showCurrentpage()  # 显示当前页的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值