今天在学习python编写简单栈的时候,脚本报错。查找错误以及解决过程记录。
pystack.py脚本
# -*- coding:utf-8 -*-
# file: pystack.py#
class PyStack: # 堆栈类
def __init__(self, size = 20):
self.stack = [] # 堆栈列表
self.size = size # 堆栈大小
self.top = -1 # 栈顶位置
def setSize(self, size): # 设置堆栈大小
self.size = size
def push(self, element): # 元素进栈
if self.isFull():
raise 'PyStackOverflow' # 如果栈满则引发异常
else:
self.stack.append(element)
self.top = self.top + 1
def pop(self): # 元素出栈
if self.isEmpty():
raise 'PyStackUnderflow' # 如果栈为空则引发异常
else:
element = self.stack[-1]
self.top = self.top - 1
del self.stack[-1]
return element
def Top(self): # 获取栈顶位置
return self.top
def empty(self): # 清空栈
self.stack = []
self.top = -1
def isEmpty(self): # 是否为空栈
if self.top == -1:
return True
else:
return False
def isFull(self): # 是否为满栈
if self.top == self.size - 1:
return True
else:
return False
if __name__ == '__main__':
stack = PyStack() # 创建栈
for i in range(10):
stack.push(i) # 元素进栈
print stack.Top() # 输出栈顶位置
for i in range(10):
print stack.pop() # 元素出栈
stack.empty() # 清空栈
for i in range(21):
stack.push(i) # 此处将引发异常
上面的脚本是网上查到正确的脚本。
======
查错过程:
1.编写脚本,执行脚本无输出。
2.在网上查找正确的脚本。
3.diff进行脚本的对比。
4.修改原脚本。
======
出错位置以及原因:
if __name__ == '__main__':
在 __name__ 独立运行设置时,'__main__' 在引号和下划线之间添加了空格,即 ' __main__ '。