CDays-2 习题二 (编写类Class,并实现简单的栈)及相关内容解析。Python 基础教程 Class
2013-02-18 15:59
846 查看
编写一个类,实现简单的栈。数据的操作按照先进后出(FILO)的顺序。主要成员函式为put(item),实现数据item插入栈中;get(),实现从栈中取一个数据。
首先一个问题,类是什么。面向对象编程语言都有这么概念,可是类是什么东西福利君至今很迷茫,在这里说下自己的理解。
Class 就是所谓的类,类是一种类似于头文件的东西,调用类以后可以执行类中的很多类中的函数定义,这个应该叫做继承,但是根据Class的定义,我们可以在调用中的程序中定义更多的内置函数,或者修改。通过类Classes的应用,我们可以快速的进行程序编写,省去了很多的麻烦。
根据这个思想,我们来做这个题。
首先,我们要定义 这个类的名字。使用语句:
class <class name> ( ) :
在之后,我们需要对这个类进行初始化。
根据栈的定义,FILO,先进后出。我们可以在Python中用列表实现这个结构。
我们需要定义栈头,最大栈尺寸。
让我们先完成这些。
class Kay_Stack(object): def __init__(self, max): ''' 初始栈头指针和清空栈 @param max: 指定栈的最大长度 ''' self.head = -1 self.stack = list( ) self.max = max for i in range(self.max): #清空栈空间 self.stack.append(0)
如果我们调用这个类,那么我们就可以得到一个空栈。
执行未发现错误。
让我们完成第一个功能,PUSH,压栈。
定义函数push ( )
def put(self, item): if self.head >= self.max: #判断当前栈是否满了 return 'Push Error: The Stack is Overflow!' #提示栈溢出 else: self.head += 1 #不满,则将item入栈,调整栈顶指针 self.stack[self.head] = item #输出栈顶指针所指元素 print 'Push %s Success' % item
我们把这个定义嵌入Class中,尝试运行。
让我们完成第二个功能,POP,出栈。
出站操作就是把栈顶指针所指的元素输出,并在栈中删除该元素。
def pop(self): if self.head <0 : #判断栈是否为空。 return 'Pop Error: The Stack is Empty!' else: self.head-=1 #移动栈顶指针 return self.stack[self.head+1] #返回偏移
让我们完成第三个功能,判断栈是否为空。
根据pop功能,我们只需要if第一段。
def isEmpty(self): if self.head < 0: return 'The Stack is Empty!' return 'The Stack is not Empty!'
有了这三个基本功能,其他的特性都可以根据这三个操作完成。
给出完整类定义。
class Kay_Stack(object):
def __init__(self, max):
self.head = -1
self.stack = list()
self.max = max
for i in range(self.max):
self.stack.append(0)
def push(self,item):
if self.head >= self.max: #判断当前栈是否满了
return 'Push Error: The Stack is Overflow!' #提示栈溢出
else:
self.head += 1 #不满,则将item入栈,调整栈顶指针
self.stack[self.head] = item #输出栈顶指针所指元素
print 'Push %s Success' % item
def pop(self): if self.head <0 : #判断栈是否为空。 return 'Pop Error: The Stack is Empty!' else: self.head-=1 #移动栈顶指针 return self.stack[self.head+1] #返回偏移
def isEmpty(self): if self.head < 0: return 'The Stack is Empty!' return 'The Stack is not Empty!'
现在我们测试一下这个类的功能。我们先将它编译运行。
然后在在命令行中输入命令,测试功能,截图如下。
相关文章推荐
- CDays-3 习题二 (字典及文件读取练习)及相关内容解析。Python 基础教程
- CDays-2 习题一 (改进函数)及相关内容解析。Python 基础教程
- CDays-3 习题三 (八皇后问题)及相关内容解析。Python 基础教程
- CDays-3 习题一 (处理命令行参数)及相关内容解析。Python getopt 简介
- CDays–4 习题六(修改文本)及相关内容解析。
- Python学习入门基础教程(learning Python)--2.2.1 Python下的变量解析 .
- 基础入门_Python-进程相关.深入理解子进程/守护进程/进程高可用实现?
- Python基础教程(十一):多线程、XML解析
- python基础---实现文件传参,修改文件内的内容
- python基础教程之实现石头剪刀布游戏示例
- 用Python实现一个简单的能够发送带附件的邮件程序的教程
- jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
- TensorFlow基础教程:搭建简单的DNN实现手写数字识别
- js基础练习---获取数组内容实现简单日历的效果
- TCP/UDP的简单相关基础知识点涉及聊天室的实现
- 用python简单实现mysql数据同步到ElasticSearch的教程
- Python里的例子:一个基础验证相关的教程
- Python实现获取邮箱内容并解析的方法示例
- 用Python实现一个简单的多线程TCP服务器的教程