Почему моя функция стекового размера возвращает NONE - PullRequest
0 голосов
/ 27 сентября 2018
class stack:
  def __init__(self)

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

Возвращается Размер равен 4 # Предполагается, что список имеет размер четыре Нет

И как я могу получить доступ к самому верхнему элементу в этом стеке

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Давайте подробно рассмотрим ваш код.

Первое, что я заметил, это то, что вам нужно добавить ключевое слово pass в любой блок, который пуст в Python.Кроме того, вы забыли открыть свой блок, не используя цвет.Итак, если я запускаю код как есть, я получаю это:

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

Переходя ко второму методу, в первой букве метода печати (P), вы заметите, что он в верхнем регистре.В программировании важны соглашения об именах, поэтому print () должно быть написано строчными буквами.Давайте посмотрим на ошибки, отмеченные во втором методе:

enter image description here

Как упоминалось выше, исправьте print () .Переходя к следующему пункту, Размер подчеркнут зеленым цветом.Я бы посоветовал вам получить программу для написания кода для вашего кода, в этом случае условные переменные должны начинаться со строчной буквы.Если мы исправим эти две вещи, ваш код будет выглядеть так:

enter image description here

хорошо, хорошо, сейчас все становится лучше.Но почему я имеет красное подчеркивание?Причина того, что self контекстуализирует текущий экземпляр, вызывая этот метод этого класса.проблема в том, что свойство стека не было объявлено, для этого измените ваш код следующим образом:

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

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

Обратите внимание, что я удалил проход и назначил пустой список члену стекапеременная.Конечно, вы решите, что переменная-член stack будет, в данном случае я просто добавил ее в список.

Хорошо, теперь последний вопрос: почему размер равен None?С изменениями кода, которые я добавил, теперь он должен возвращать ноль (0) , поскольку список стеков пуст, но список есть.

Классы по соглашению начинаются с заглавной буквы.

enter image description here

Наконец, как вы можете получить доступ к верхнему элементу стека?Например:

enter image description here

Контекст этого кода, конечно, находится вне контекста класса, обратите внимание, что он не имеет self. , но это должно быть то же самое для вашего self.stack .

Надеюсь, это поможет приятель!:)

0 голосов
/ 27 сентября 2018

Я не уверен, что введенный вами код завершен, но ваша init функция не завершена.Используйте «pass» для объявления функций, которые не имеют реального кода.Во-вторых, размер стека возвращает 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...