我正在尝试初始化一个基本堆栈 - 使用推送和弹出功能。 测试时出现问题。您会在代码中注意到我已经推送了 2 次,因此堆栈的打印应该显示
[5,5]
,而它正在显示 None
。我可以修改代码以使其最终工作,但随后我将无法完全理解基本概念和我的方法的错误。所以我寻求建议和指点。
请检查这些代码并告诉我我做错了什么。
这是包含所有功能的类的代码,它的名称为
stack_class
:
class Stack:
def __init__(self):
self._values = []
print ('Stack initialized...')
return
def push(self, var):
ok = self._values.append(var)
return ok
def pop(self):
self.stack.pop()
def __str__(self):
output = "{0}".format(self.ok)
return output
这是测试代码:
from stack_class import Stack
ob_1 = Stack()
ob_1.push(5)
print(ob_1.push(5))
发生的情况是
append
方法不返回任何内容。
print [].append(1)
>>> None
它完成了它的工作,但不返回任何东西,这就是为什么你在变量
None
中得到ok
。我认为您想返回 _values
来代替:
def push(self, var):
self._values.append(var)
return self._values
输出:
Stack initialized...
[5, 5]
此外,这是我第一次读到空返回约定。没必要。
在您的测试代码中,您没有通过执行“print(ob_1.push(5))”来打印堆栈。它的作用是触发入栈函数,将另一个 5 插入堆栈中。要打印堆栈内容,只需使用堆栈名称: 打印(ob_1) 这将返回堆栈内容:[5,5]