0

リストからスタックに要素をプッシュしようとしています。コードは次のとおりです。

#!/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 つのスタックにプッシュすると、オペレーターが存在します。ここで何が間違っていますか?

4

1 に答える 1

2

おそらくあなたのインデントが に対して間違っているのではないかと思いますがInsertIntostacks(lst1)、それが問題です。

InsertIntostacks(lst1)がループに適切に配置されていることを確認してください。つまり、ループではなく、ループのforに実行されます。現在、実際に空である最初の反復を含め、ループのすべての反復中に実行されています。lst

于 2013-06-14T18:34:18.100 に答える