私は循環配列クラスを作成するプロジェクトを持っており、使用する言語はPythonです。私はPythonでクラスに新しくなっていますが、書籍のいくつかのWebページや章を読んだ後、私は彼らの仕組みを理解していると思います。しかし、私は助けが必要なので、私はここで素晴らしい教師に来ると思った: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主にT、機能のいくつかのテストを開始して停止しました。 c = circular()とc.addToBack(2)を使ってIDLEでテストしたところ、インデックスエラーが発生しました。これが唯一の問題ではなく、私が立ち往生して前進するための助けが必要な場所です。
私は助けが必要なので、ここに投稿しています。私は怠け者で、私の問題を研究しようとしていないからではありません。既にありがとう!あなたは
self.store[self.endIndex] = value
を行うあなたはaddToBack
で
self.store = []
を設定__init__
で
'a = []; a [1] = 3は同じエラーを生成します。存在しないインデックスに書き込むことはできません。あなたは何をしようとしていますか?これは円形(固定サイズ)*バッファーですか? –
@yi_Hはいこれは、上記の操作を実行する固定循環バッファを書き込むプロジェクトです。私はインデックスの問題を修正して、今は私が呼び出す関数ごとにエラーを定義していないので、私は推測している私の構文で何かが間違っています。 – roboman
'self.'を使用する必要があります –