gpt4 book ai didi

python - 使用2个队列创建堆栈

转载 作者:行者123 更新时间:2023-12-01 02:06:42 26 4
gpt4 key购买 nike

嘿,大家好,我在数据结构课上的第一个作业遇到了麻烦,希望有人能提供一些关于我做错了什么的见解。

我必须创建一个利用 2 个队列进行数据存储的堆栈。

import Queue_PlistLR as queueList

import Queue_PlistLR as queueList

class Stack_2Queues():

def __init__(self, name, salary):
self.items = []
self.name = name
self.salary = salary

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

def push(self, e):
self._data.append(e)

def pop(self):
if self.is_empty:
raiseEmpty("Stack is empty")
return self._data.pop()
def size(self):
return len(self.items)

def to_String(self):
str_i = ""
for e in self.items:
str_i+=str(e)+" "
return str_i.strip()

def length(self):

return len()

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

def dequeue(self):
if self.isEmpty():
raise Empty('Queue is empty')
return self.items.pop(0)

def employeeName(self):
print("The employee is: ", self.name)

def employeeSalary(self):

print("Employees salary is", self.salary)

s1 = Stack_2Queues = [["Ash", "Jen", "Mike", "Zach"], [45000, 32000, 74000, 960000]]

s1.employeeName()
s1.employeeSalary()

***我知道这在很大程度上是错误的。但我的问题是这样的。对于堆栈,我想使用 1 个堆栈创建 2 个队列,一个用于 employeeName,另一个用于 employeeSalary。

此外,当我尝试从堆栈中打印姓名和工资(以查看它是否有效)时,我收到“列表没有属性”错误。***

所以,这是我的问题:

1)请原谅我的文盲,这听起来可能很愚蠢,但是我的 s1 变量是堆栈的形式吗?

2)既然我定义了所有方法并调用了它们,为什么我得到的列表没有属性?

最佳答案

AttributeError 是由这一行引起的:

s1 = Stack_2Queues = [["Ash", "Jen", "Mike", "Zach"], [45000, 32000, 74000, 960000]]

这不是初始化 Stack_2Queues 的方式。这里实际上是将包含另外两个列表的列表分配给变量 s1Stack_2Queues(从而将指向类定义的引用更改为列表)

In [1]: s1 = Stack_2Queues = [["Ash", "Jen", "Mike", "Zach"], [45000, 32000, 74000, 960000]]

In [2]: print(s1)
[['Ash', 'Jen', 'Mike', 'Zach'], [45000, 32000, 74000, 960000]]

In [3]: print(Stack_2Queues)
[['Ash', 'Jen', 'Mike', 'Zach'], [45000, 32000, 74000, 960000]]

理解这一点的简单示例:

In [4]: a = 5

In [5]: b = 5

这相当于:

In [6]: a = b = 5

将行更改为:

s1 = Stack_2Queues(["Ash", "Jen", "Mike", "Zach"], [45000, 32000, 74000, 960000])

之后它对我有用:

('The employee is: ', ['Ash', 'Jen', 'Mike', 'Zach'])
('Employees salary is', [45000, 32000, 74000, 960000])

此外,您还在未使用过的脚本顶部导入了两次相同的模块。

如果您尝试在 Stack_2Queues 实例上调用 pushpop,python 将抛出另一个 AttributeError因为 Stack_2Queues 没有任何 _data 属性。

def push(self, e):
self._data.append(e)

def pop(self):
if self.is_empty:
raiseEmpty("Stack is empty")
return self._data.pop()

您也许应该更改这部分代码或在 __init__ 方法中添加 self._data

这也行不通:

def length(self):
return len()

在不带任何参数的情况下调用内置len函数将引发错误。 https://docs.python.org/3.6/library/functions.html#len它可能是多余的,因为您定义了 size 方法并且可能执行相同的操作。

关于python - 使用2个队列创建堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48982873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com