我正在尝试将元素从列表推送到堆栈。这是代码:
#!/usr/bin/python
class Stack :
def __init__(self) :
self.items = []
def push(self, item) :
self.items.append(item)
def pop(self) :
return self.items.pop()
def isEmpty(self) :
if self.items == []:
return true
def InsertIntostacks(lst1):
X = Stack() #for each expression a stack is defined
Y = Stack()
for words in lst1:
if (ord(words) >= 48 and ord(words) <= 57) or (ord(words) >=65 and ord(words) <= 90):
X.push(words)
else:
Y.push(words)
print X.pop()
if __name__ == '__main__':
a = open("testinput1.txt","r+")
wordList = [line.strip() for line in a];
#print wordList[1]
lst=list()
for words in wordList:
if words == '#':
print "End of file"
else:
lst = list(words)
lst1 = list()
print lst
for x1 in lst:
if x1 != ' ':
lst1.append(x1)
InsertIntostacks(lst1)
所以X正在填充,我需要Y来包含运算符,但显然没有元素进入Y(输入像A = B = C,所以Y应该包含= =)。 如果我删除约束并将所有元素推入一个堆栈中,则运算符就在那里。 我在这里做错了什么?
答案 0 :(得分:2)
我怀疑InsertIntostacks(lst1)
你的缩进可能是错误的,这就是问题所在。
尝试确保InsertIntostacks(lst1)
与for
循环正确对齐,这意味着它在循环之后执行,而不是在之内。现在它正在循环的每次迭代中执行,包括第一次迭代,其中lst
确实是空的。