首页 > 代码库 > 【codewar-6kyu】PaginationHelper
【codewar-6kyu】PaginationHelper
##题目描述
Description:
For this exercise you will be strengthening your page-fu mastery. You will complete the PaginationHelper class, which is a utility class helpful for querying paging information related to an array.
The class is designed to take in an array of values and an integer indicating how many items will be allowed per each page. The types of values contained within the collection/array are not relevant.
The following are some examples of how this class is used:
1 helper = PaginationHelper([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘], 4) 2 helper.page_count # should == 2 3 helper.item_count # should == 6 4 helper.page_item_count(0) # should == 4 5 helper.page_item_count(1) # last page - should == 2 6 helper.page_item_count(2) # should == -1 since the page is invalid 7 8 # page_ndex takes an item index and returns the page that it belongs on 9 helper.page_index(5) # should == 1 (zero based index)10 helper.page_index(2) # should == 011 helper.page_index(20) # should == -112 helper.page_index(-10) # should == -1 because negative indexes are invalid
##思路分析
进入6kyu 之后突然就吃力了些,感觉难起来的并不是编码,而是逻辑的完备性。
细心些,考虑各种非常规情况,超出处理阈值的情况,一定要——滴水不漏。
##代码解析
Python
1 # TODO: complete this class 2 3 class PaginationHelper: 4 5 # The constructor takes in an array of items and a integer indicating 6 # how many items fit within a single page 7 def __init__(self, collection, items_per_page): 8 self.collection = collection 9 self.items_per_page = items_per_page10 11 12 # returns the number of items within the entire collection13 def item_count(self):14 return len(self.collection)15 16 # returns the number of pages17 def page_count(self):18 if len(self.collection) % self.items_per_page == 0:19 return len(self.collection) / self.items_per_page20 else:21 return len(self.collection) / self.items_per_page + 122 23 24 25 # returns the number of items on the current page. page_index is zero based26 # this method should return -1 for page_index values that are out of range27 def page_item_count(self,page_index):28 if page_index >= self.page_count():29 return -130 elif page_index == self.page_count() - 1:31 return len(self.collection) % self.items_per_page or self.items_per_page32 else:33 return self.items_per_page34 35 36 37 # determines what page an item is on. Zero based indexes.38 # this method should return -1 for item_index values that are out of range39 def page_index(self,item_index):40 if item_index >= len(self.collection) or item_index < 0:41 return -142 else:43 return item_index / self.items_per_page44
【codewar-6kyu】PaginationHelper
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。