弹出空列表错误

时间:2013-06-14 17:24:02

标签: python list debugging stack

我正在尝试将元素从列表推送到堆栈。这是代码:

#!/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应该包含= =)。 如果我删除约束并将所有元素推入一个堆栈中,则运算符就在那里。 我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

我怀疑InsertIntostacks(lst1)你的缩进可能是错误的,这就是问题所在。

尝试确保InsertIntostacks(lst1)for循环正确对齐,这意味着它在循环之后执行,而不是之内。现在它正在循环的每次迭代中执行,包括第一次迭代,其中lst确实是空的。