【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 == 0
11 helper.page_index(20) # should == -1
12 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_page
10
11
12   # returns the number of items within the entire collection
13   def item_count(self):
14     return len(self.collection)
15
16   # returns the number of pages
17   def page_count(self):
18     if len(self.collection) % self.items_per_page == 0:
19       return len(self.collection) / self.items_per_page
20     else:
21       return len(self.collection) / self.items_per_page + 1
22
23
24
25   # returns the number of items on the current page. page_index is zero based
26   # this method should return -1 for page_index values that are out of range
27   def page_item_count(self,page_index):
28     if page_index >= self.page_count():
29       return -1
30     elif page_index == self.page_count() - 1:
31       return len(self.collection) % self.items_per_page or self.items_per_page
32     else:
33       return self.items_per_page
34
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 range
39   def page_index(self,item_index):
40     if item_index >= len(self.collection) or item_index < 0:
41       return -1
42     else:
43       return item_index / self.items_per_page
44       
时间: 2024-10-13 12:02:40

【codewar-6kyu】PaginationHelper的相关文章

【codeforces 718E】E. Matvey&#39;s Birthday

题目大意&链接: http://codeforces.com/problemset/problem/718/E 给一个长为n(n<=100 000)的只包含‘a’~‘h’8个字符的字符串s.两个位置i,j(i!=j)存在一条边,当且仅当|i-j|==1或s[i]==s[j].求这个无向图的直径,以及直径数量. 题解:  命题1:任意位置之间距离不会大于15. 证明:对于任意两个位置i,j之间,其所经过每种字符不会超过2个(因为相同字符会连边),所以i,j经过节点至多为16,也就意味着边数至多

【c/c++】内存分配大小

测试平台:linux 32位系统 用sizeof()运算符计算分配空间大小.单位:字节 1. 数组名与变量名的区别 int main() { char q[] = "hello"; cout << "q:" << sizeof(q) << endl; char *mq = q; cout << "mq:" << sizeof(mq) << endl; const char *

【 js 基础 】Javascript “继承”

是时候写一写 "继承"了,为什么加引号,因为当你阅读完这篇文章,你会知道,说是 继承 其实是不准确的. 一.类1.传统的面向类的语言中的类:类/继承 描述了一种代码的组织结构形式.举个例子:"汽车"可以被看作是"交通工具"的一种特例.我们可以定义一个 Vehicle 类和一个 Car 类来对这种关系进行描述.Vehicle 的定义可能包含引擎.载人能力等,也就是 所有交通工具,比如飞机.火车和汽车等都有的通用的功能描述.在对 Car 类进行定义的

服务 Service【经典案例】

2017-1-19 Activity public class MainActivity extends ListActivity {     private boolean flag;//线程结束条件     public static final String ACTION_TEST_SERVICE = "com.bqt.service.TEST_SERVICE";     private MyServiceConnection conn;     private IBinderI

【N版】openstack——走进云计算(一)

[N版]openstack--走进云计算 一.云计算 云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问,进入可配置的计算资源共享池(资源包括:网络.服务器.存储.应用软件.服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互. 1.1云计算的特点和优势 1)云计算是一种使用模式 2)云计算必须通过网络访问 3)弹性计算,按需付费 1.2在云计算之前的模式或技术 1)IDC托管 2)IDC租用 3)虚拟主机(卖空间的) 4)VPS:虚拟专用

【N版】openstack——认证服务keystone(三)

[N版]openstack--认证服务keystone 一.keystone介绍 1.1keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理. 用户认证:用户权限与用户行为跟踪 服务目录:提供一个服务目录,包括所有服务项与相关API的端点 主要涉及如下概念: User:  

【N版】openstack——镜像服务glance(四)

[N版]openstack--镜像服务glance 一.openstack之glance镜像服务 1.1glance介绍 glance主要是由三部分组成 glance-api:接收云系统镜像的创建,删除,读取请求,类似nova-api,通过其他模块(glance-registry及image store)来完成诸如镜像的查找.获取.上传.删除等操作,api监听端口9292. glance-registry:云系统的镜像注册服务,用于与mysql数据库交互,存储或获取镜像的元数据(metadata

Python之路【第十七篇】:Django【进阶篇 】

Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost')

Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memc

HDU 5925 Coconuts 【离散化+BFS】 (2016CCPC东北地区大学生程序设计竞赛)

Coconuts Time Limit: 9000/4500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 524    Accepted Submission(s): 151 Problem Description TanBig, a friend of Mr. Frog, likes eating very much, so he always has dreams abou