には属性「プッシュ」を持っていない:DPythonの「strの」オブジェクトは、うまくいけば私のコードがあまりにもばかばかしいではありません、私は絶対のPythonで初心者、まだコーディングで、一般的に非常に良好ではないよPyCharm
Iスタックプログラムを記述する必要があります。スタックプログラムはスタックプログラム&のリストです。 これは私のコードです:
class Stack:
def __init__(self):
self.items = []
def pop(self):
return self.items.pop()
def push(self, item):
self.items.append(item)
def isEmpty(self):
return self.items == []
def execute(list):
result = Stack()
for x in list:
if 'LOAD' in x:
number = substring_after(x, " ")
result.push(number)
elif 'ADD' in x:
result = result.pop() + result.pop()
elif 'MUL' in x:
result = result.pop() * result.pop()
elif 'SUB' in x:
first = result.pop()
result = result.pop() - first
elif 'DIV' in x:
first = result.pop()
result = result.pop()/first
elif 'PRINT' in x:
print(result.pop())
if result.isEmpty():
print('Execution completed')
else:
print('There are still values in the Stack')
else:
print('Not a valid statement for Stack Program')
def substring_after(s, delim):
return s.partition(delim)[2]
def main():
operation1 = ["LOAD 2", "LOAD 3", "ADD", "LOAD 4", "MUL", "PRINT"]
operation2 = ["LOAD 4", "LOAD 5", "ADD", "LOAD 2", "LOAD 3", "ADD",
"MUL", "PRINT"]
operation3 = ["LOAD 6", "LOAD 7", "LOAD 4", "SUB", "DIV", "LOAD 5",
"MUL", "PRINT"]
execute(operation1)
if __name__ == '__main__':
main()
私は取得していますエラーは次のとおりです。
Traceback (most recent call last):
File "XXX/EA2-Stack.py", line 53, in <module> main()
File "XXX/EA2-Stack.py", line 47, in main execute(operation1)
File "XXX/EA2-Stack.py", line 19, in execute result.push(number)
AttributeError: 'str' object has no attribute 'push'
私は理解していない:
1)を、なぜそれがそこにあることを、言わないん'押す'?私は「プッシュ」と呼ばれる方法を定義しました。 は、私はまた、書き込もうとしました: プッシュ(結果、数)、しかし、それは「未解決の参照」
2)なぜそれが属性プッシュ言うんは言いますか?これは属性ではなく、メソッドです。
私はここで何かが欠けてること、感じを持っている:(私を助けていないため ありがとう:。>
おかげでたくさん!私はこれを考えなかったし、今それは動作します:) – Lorayne