Python 禁止索引器调用整数
我正在开发一个使用堆栈类的中缀前缀程序。然而,每当我调用整数时,push()方法都会引发一个索引器,即使我有一个异常处理程序,并且我引用的是整数本身,而不是列表 stack.py:Python 禁止索引器调用整数,python,python-3.x,stack-overflow,Python,Python 3.x,Stack Overflow,我正在开发一个使用堆栈类的中缀前缀程序。然而,每当我调用整数时,push()方法都会引发一个索引器,即使我有一个异常处理程序,并且我引用的是整数本身,而不是列表 stack.py: class stack(): def __init__(self,n): self.n = n self.top = -1 self.stack = [""] * n #... def push(self,c): try:
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
回溯(最近一次呼叫最后一次):
文件“”,第247行,在run_nodebug中
文件“P:\Scripts\Python\ascl pip.py”,第42行,在
toPrefix(中缀)
toPrefix中第37行的文件“P:\Scripts\Python\ascl pip.py”
instack.push(输入[i][c])
文件“P:\Scripts\Python\stack.py”,第36行,在push中
打印(self.top)
索引器:列表分配索引超出范围
您的回溯不一致。它主张这条线
print(self.top)
是导致索引器
的原因,但print()
永远不会引发此类错误
发生这种情况的唯一方法是,您使用的是仍然加载在解释器实例中的旧版本模块。重新启动解释器
如果您真的需要实现自己的堆栈类,您可以使用以下愚蠢的方法:
class Stack(list):
push = list.append
此堆栈的大小不受限制。请始终包含您收到的错误消息的完整回溯。并且您不需要实现堆栈。标准Python列表有
append()
和pop()
方法。@SvenMarnach这是一个需要我编写自己的堆栈类的类。您对toPrefix
的输入是一个包含三个字符串的列表。“abcde”、“abcde”和“abcdef”,所以应该有一个索引器,但它没有被异常处理程序捕获,而且索引器不是来自输入或堆栈变量。push=list.append
现在这只是试图击败系统:)我认为标记赋值的人不会对that@KshitijMehta当前位置我的态度是荒谬的任务应该得到荒谬的解决方案。如果你想用C实现一个堆栈,那没关系。然而,Python中的堆栈不可避免地基于列表,因此您应该在堆栈实现之上编写一个堆栈实现。我建议的实施只是强调了这一点。