class stack:
def __init__(self, start = []):
# 属于“魔法方法”,是Python自动产生的方法。
# __init__方法,在创建对象后,会被自动调用。
self.stack = [] # 定义一个空的栈。
for x in start: # ?问1: 这必要吗?后面的code,不是定义了push函数了吗?
self.push(x) # 同上问题。
def isEmpty(self):
# 属于“人为自定义”的方法。判断当前栈是否为空(返回 True 或 False)
return not self.stack # ?问2:本句,为何并未按照题目要求,返回 True 或 False呢?
def push(self, obj):
# 属于“人为自定义”的方法。往栈的顶部压入一个数据项
self.stack.append(obj) # 向栈里面,按照“后进先出”的顺序,append一个obj
def pop(self):
# 属于“人为自定义”的方法。从栈顶弹出一个数据项(并在栈中删除)
if not self.stack:
# ?问3:这是个简略表达吗?等同于:if self.stack == [] 空列表的意思?
print('警告:栈为空!')
else:
return self.stack.pop()
# 从栈里面,按照“后进先出”的顺序,pop出一个obj
def top(self):
# 属于“人为自定义”的方法。显示当前栈顶的一个数据项
if not self.stack:
print('警告:栈为空!')
else:
return self.stack[0]
# ? 问4:这里如果用 print(self.stack[0]),也行吧?
def bottom(self):
# 属于“人为自定义”的方法。显示当前栈底的一个数据项
if not self.stack:
print('警告:栈为空!')
else:
return self.stack[0]
A = stack([1,2,3])
这个我试过了, 没问题, 变量名为A, 类型名是stack, 后面的变量名都替换成A |