:Pythonの中置は、評価はAttributeErrorを投稿-修正する: 'リスト' オブジェクトには、属性を持たない 'スプリット'
from StackClass import Stack
def postfixEval(postfix):
os = Stack()
tokenList = postfix.split()
for token in tokenList:
if token in "":
os.push(int(token))
else:
op2 = os.pop()
op1 = os.pop()
result = doMath(token,op1,op2)
os.push(result)
return os.pop()
def doMath(op, op1, op2):
if op == "*":
return op1 * op2
elif op == "/":
return op1/op2
elif op == "+":
return op1 + op2
else:
return op1 - op2
def pres(p):
if p is '(':
return 0
elif p is '+' or '-':
return 1
elif p is '*' or '/':
return 2
else:
return 99
def read(p):
if p is '(':
return left
elif p is ')':
return right
elif p is '+' or p is '-' or p is '*' or p is '%' or p is '/':
return operator
elif p is ' ':
return empty
else :
return operand
def infixtopostfix(infixexp):
for i in infixexp :
type = read(i)
if type is left :
outlst.append(i)
elif type is right :
next = outlst.pop()
while next is not '(':
postfix.append(next)
next = outlst.pop()
elif type is operand:
postfix.append(i)
elif type is operator:
p = pres(i)
while len(outlst) is not 0 and p <= pres(outlst[-1]) :
postfix.append(outlst.pop())
outlst.append(i)
elif type is empty:
continue
while len(outlst) > 0 :
postfix.append(outlst.pop())
print "It's postfix notation is ",''.join(postfix)
MAIN PROGRAM
真しばらく:
postfix = []
outlst = []
operator = -10
operand = -20
left = -30
right = -40
empty = -50
infixexp = raw_input("\nEnter the infix notation : ")
infixtopostfix(infixexp)
print(postfixEval(postfix))
choice = raw_input("\nDo you want to continue?<1-Yes/0-No>: ")
if choice == '0':
break
このエラーが表示されます。AttributeError: 'list'オブジェクトに 'split'属性がありません。私はそれがどこから来るのか分からない、私は結合を使用してリストをストリングしようとしたが効果がない。私はこれを投稿する必要があるように感じました、私は助けが必要ですまたスタック実装と評価でこのエラーでも問題を抱えている人のために。
ところで、infixtopostfix(infixexp)の部分では、どうやって結果が空白になるか考えていますか?例えば、13 + 5 *の代わりに1 3 + 5 *とする。私はこれをどのようにして行うのですか?私は今それを考え出している。私はここで私自身の質問に答えます。私が問題を解決すれば。しかし、時間の効率化のために、誰かがこれにぶつかり、過去にこの問題を解決したかもしれません。助けてください:)ありがとう! postfixEval tokenList =後置の印刷でファイル "practice.py"、ライン112、(postfixEval(接尾辞))ファイル "practice.py"、8行目、:
TRACEBACK
トレースバック(最新の呼び出しの最後) .split()AttributeError: 'list'オブジェクトに 'split'属性がありません
完全なスタックトレースを投稿してください – e4c5
フルトレースバックを表示してください –
リストオブジェクトには分割がありません。 'import pdb;を追加してください。 inflixxxxxの型がわからない場合は、pdb.set_trace()を呼び出してください。 – Shuo