Python Stack不使用Pop函数

时间:2016-09-13 04:35:44

标签: python-2.7 stack

我正在学习python并且有一项任务是为了更好地理解" class"并使用" stack。"

要求如下:

- 定义一个为数值实现堆栈的类。

- 不使用内置弹出功能

-Function push应检查值是否为数值

-Function print_stack应该在堆栈中打印值,最近(在顶部)第一个

-Function IsEmpty如果stack为空则返回True,否则返回

到目前为止,这是我的工作:

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

    def push(self, item):
        self.items.append(item)

    def isEmpty(self):
        return (self.items == [])  #can also use return not self i think?

    def print_stack(self):
        print self.items  

这是我编程的第一堂课,所以如果我的理解很差,我很抱歉。我不是在寻找任何人直接为我写这篇文章。我真的很想了解如何解决这个问题并获得一些关于我需要做什么的指示,以及我在理解它时缺乏的一些指示。

我的问题如下:

1)如何测试我是否在推数值?首先想到的是,我可以使用try / except吗?

2)在不使用内置功能的情况下创建弹出功能的最佳方法是什么?这真的让我很难过。根据我的理解,我需要编写一些能够从列表中检索最后一项并将其返回的内容。

3)测试我的代码我会做这样的事情吗?

test = stack()
test.push(1)
test.print_stack()
test.pop()  #whenever I learn how to make a pop function
test.isEmpty

1 个答案:

答案 0 :(得分:1)

如何测试我是否在推数值?首先想一想,我可以使用try / except吗?

您不需要对其进行测试。只需将其转换为int或此时正在处理的任何数据类型。例如 如果您正在使用int

def push(self, item):
    self.items.append(int(item))

如果您正在使用float

def push(self, item):
    self.items.append(float(item))

如果您正在使用string

def push(self, item):
    self.items.append(str(item))


在不使用内置功能的情况下创建弹出功能的最佳方法是什么?这真的让我很难过。根据我的理解,我需要写一些能够从列表中检索最后一项并将其返回的内容。

有多种方式,

  1. 使用del

    def pop(self):
        n = self.items[0]
        del self.items[0]
        return n
    
  2. 使用切片

    def pop(self):
        n = self.items[0]
        self.items = self.items[1:]
        return n
    

    请注意,这会返回原始的子集但不会修改它。

  3. 使用popleft()

    def pop(self):
        return self.items.popleft()
    
  4. 一个建议 您还可以使用len()来检查列表的长度,并使用它来检查堆栈是否为空,

    def isEmpty(self):
        return (len(self.items) == 0)
    

    注意:在弹出之前使用isEmpty()函数检查堆栈是否为空。


    测试我的代码我会做这样的事情吗?

    只是尝试执行每个函数,如果您认为存在问题,则在每次操作后打印堆栈。您将看到堆栈中的值是如何更新的。