调用Integer的IndexError

时间:2012-04-11 16:43:49

标签: python python-3.x stack-overflow

我正在使用堆栈类的中缀来编写前缀程序。但是,每当我调用一个整数时,push()方法都会引发一个IndexError,即使我有一个Exception Handler并且我引用整数本身,而不是列表。

stack.py:

class stack():
    def __init__(self,n):
        self.n = n
        self.top = -1
        self.stack = [""] * n

    #...

    def push(self,c):
        try:
            print(self.top)
            self.top += 1
            self.stack[self.top] = c
        except IndexError:
            print("Stack is full.")

pip.py:

def toPrefix(input):
    instack = stack(15)
    prefix = ""

    for i in range(0,len(input)):
        for c in range(0,len(input[i])):
            if(input[i][c].isalpha()):
                instack.push(input[i][c])

错误:

Traceback (most recent call last):
  File "<string>", line 247, in run_nodebug
  File "P:\Scripts\Python\ascl-pip.py", line 42, in <module>
    toPrefix(infix)
  File "P:\Scripts\Python\ascl-pip.py", line 37, in toPrefix
    instack.push(input[i][c])
  File "P:\Scripts\Python\stack.py", line 36, in push
    print(self.top)
IndexError: list assignment index out of range

1 个答案:

答案 0 :(得分:0)

您的追溯不一致。声称该行

print(self.top)

IndexError的原因,但print()永远不会引发此类错误。

这种情况发生的唯一方法是使用仍在解释器实例中加载的旧版本模块。重启你的口译员。

如果你真的需要实现自己的堆栈类,你可以选择像这样的蠢事:

class Stack(list):
    push = list.append

此堆栈的大小不受限制。