为什么我的stacksize函数返回NONE

时间:2018-09-27 09:23:27

标签: python python-2.7 stack

class stack:
  def __init__(self)

  def stacksize(self):
       Size=len(self.stack)
       Print ('size is', size)

返回 大小为4#假设列表的大小为4 没有

以及如何访问该堆栈中最上面的元素

2 个答案:

答案 0 :(得分:0)

我不确定您发布的代码是否完整,但是您的 init 功能不完整。使用“ pass”来声明没有任何实际代码的函数。其次,stacksize返回None,因为您实际上没有返回任何东西。

class stack:
  def __init__(self):
      pass # Add this line of code

  def stacksize(self):
       Size=len(self.stack)
       Print ('size is', size)
       return size # Add this line of code to return the value.

答案 1 :(得分:0)

让我们详细介绍您的代码。

我注意到的第一件事是,您需要向所有在python中为空的块添加 pass 关键字。另外,您忘记了不使用颜色来打开块。因此,如果按原样运行代码,则会得到以下信息:

File "main.py", line 2    def __init__(self)
                                           ^
SyntaxError: invalid syntax

转到第二种方法,在打印方法(P)的第一个字母中,您注意到它是大写的。在编程中,命名约定很重要,因此 print()应该全部小写。让我们看一下第二种方法中标记的错误:

enter image description here

如上所述,请更正 print()。接下来,尺寸用绿色下划线标出。我建议您为代码提供一个整理程序,在这种情况下,按照惯例,变量应以小写字母开头。如果我们修复了这两件事,您的代码状态就是:

enter image description here

好的,很好,现在情况正在好转。但是,为什么自我下划线是红色的?该 self 的原因是将调用此类的此方法的当前实例上下文化。问题是尚未声明stack属性,为此,请将您的代码更改如下:

class stack:
  def __init__(self):
      self.stack = []

  def stacksize(self):
       size = len(self.stack)
       print('size is', size)

请注意,我删除了pass,并为堆栈成员变量分配了一个空列表。当然,您将确定 stack 成员变量,在这种情况下,我只是将其添加为列表。

好吧,现在,最后一个问题是,为什么 size 为None?加上我添加的代码更改后,它现在应该返回零(0),因为堆栈列表为空,但是有一个列表。

按照惯例,类以大写字母开头。

enter image description here

最后,您如何访问堆栈的顶部元素?像这样:

enter image description here

此代码的上下文当然在类上下文之外,请注意,它没有 self。,但对于您的 self.stack 应该相同。

我希望这对朋友有帮助! :)