Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的stacksize函数返回NONE_Python_Python 2.7_Stack - Fatal编程技术网

Python 为什么我的stacksize函数返回NONE

Python 为什么我的stacksize函数返回NONE,python,python-2.7,stack,Python,Python 2.7,Stack,它回来了 大小为4#假设列表大小为4 没有 如何访问堆栈中最顶层的元素我不确定您发布的代码是否完整,但您的init函数不完整。使用“pass”来声明没有任何实际代码的函数。其次,stacksize不返回任何内容,因为您实际上没有返回任何内容 class stack: def __init__(self) def stacksize(self): Size=len(self.stack) Print ('size is', size) 让我们详细讨论一下您的

它回来了 大小为4#假设列表大小为4 没有


如何访问堆栈中最顶层的元素我不确定您发布的代码是否完整,但您的init函数不完整。使用“pass”来声明没有任何实际代码的函数。其次,stacksize不返回任何内容,因为您实际上没有返回任何内容

class stack:
  def __init__(self)

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

让我们详细讨论一下您的代码

我注意到的第一件事是,您需要将pass关键字添加到python中的任何空块中。此外,您忘记了通过不使用颜色打开块。因此,如果我按原样运行代码,我会得到以下结果:

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.
转到第二种方法,在print方法(p)的第一个字母中,您注意到它是大写的。在编程中,命名约定很重要,因此print()应该全部使用小写。让我们来看看第二种方法中的错误:

如上所述,请更正打印()。继续下一步,大小以绿色下划线。我建议您为代码准备一个linting程序,在这种情况下,按照约定,变量应该以小写字母开头。如果我们解决了这两个问题,代码的状态如下:

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

File "main.py", line 2    def __init__(self)
                                           ^
SyntaxError: invalid syntax
请注意,我删除了pass,并为stack成员变量分配了一个空列表。当然,您将决定stack成员变量为,在本例中,我只是将其添加为列表

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

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

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

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


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

您尚未将任何对象指定给堆栈。函数返回None,因为您还没有从函数返回任何内容。多谢,我已经调试了所有代码,它可以正常工作!:)。
class stack:
  def __init__(self):
      self.stack = []

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