我有一个创建循环数组类的项目,我将使用的语言是python。我是python中的新手,但在阅读了一些网页和书籍章节后,我想我已经了解它们是如何工作的。但是我需要帮助,所以我想我会来这里的优秀老师:)
我们班必须能够实施多项操作;在前面插入,在后面插入,在索引处插入,从前面移除,从后面移除,从索引中移除。
我已经开始编码但遇到了一些问题,而且我不能100%确定我的语法是否正确。
这是我到目前为止所做的:
class circular:
def __init__(self):
self.store = []
self.capacity = len(self.store)
self.size = 0
self.startIndex = 0
self.endIndex = 0
def decrementIndex(self):
index = index - 1
if index < 0:
self.store = self.store + self.capacity
def incrementIndex(self):
index = index + 1
if index == self.capacity:
index = index - self.capacity
def addToBack(self, value):
self.store[self.endIndex] = value
self.endIndex = incrementIndex(self.endIndex)
self.size += 1
def addToFront(self, value):
if self.size == 0:
addToBack(self, value)
else:
self.startIndex = decrementIndex(self.startIndex)
self.store[self.startIndex] = value
self.size += 1
我在那里开始测试一些功能,主要是addTofront和addToback。在使用c = circular()和c.addToBack(2)在IDLE中测试它时,我得到一个索引错误......我不知道为什么。这不是唯一的问题,只是我遇到困难并需要向前推进的帮助。
我在这里发帖是因为我需要帮助而想要学习,不是因为我懒惰而且没有尝试研究我的问题。非常感谢SO!
答案 0 :(得分:1)
在__init__
中设置
self.store = []
在addToBack
你做
self.store[self.endIndex] = value
如果这是圆形阵列上的第一个操作,并且您将2
作为value
传递,则转为
[][0] = 2
问题应该是显而易见的 - 空列表没有0
的索引,它根本没有索引。
您需要以不同的方式将项目添加到列表中。
我不会准确地告诉你如何解决这个问题。