我正在参加算法和数据结构(Python)课程。在书中有一个“堆栈”的例子,其中的方法返回某些值。在本书中,调用方法时会打印这些值。但是,当我运行程序时,没有打印任何内容。我必须自己打印返回值。这是Python 2和3之间的区别,还是我做错了什么?这是代码。
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
s=Stack(); s.push(5)
s.size()
s.isEmpty()
s.peek()
所以,这应该打印“1”,“False”和“5”。但事实并非如此。
答案 0 :(得分:7)
在交互式解释器中,Python将打印repr
表达式值(None
除外)以方便使用。在脚本中,您必须手动打印,因为在脚本中自动打印非常难以处理。
答案 1 :(得分:3)
如果您没有包含打印声明,为什么要打印? 尝试:
print s.size()
print s.isEmpty()
print s.peek()
答案 2 :(得分:2)
我假设您的输入文件中有代码,例如a.py.在这种情况下,s.size()等的值被忽略。另一方面,如果您在交互式python会话中键入类似的内容,则会自动为您打印这些值。尝试所有这些调用的最佳方法是:从输入文件中删除s上的所有操作,只留下堆栈定义。然后使用
python -i a.py
这将使用堆栈定义加载您的文件,然后可以使用交互模式(所谓的REPL),您可以尝试s=Stack(); s.push(5)
等。
答案 3 :(得分:0)
你可以
s=Stack()
s.push(5)
print s.size()
print s.isEmpty()
print s.peek()
或将return
语句替换为print
。