class Solution:
def calculate(self, s: str) -> int:
s=s.replace(' ','')
l=len(s)#字符串长度
templist=[]
i=0
while i<l:#处理字符串成列表
temp='0'
while s[i].isdigit():
temp=temp+s[i]
i=i+1
if i==l:
break
temp=int(temp.strip())
templist.append(temp)
if i<l:
templist.append(s[i])
i=i+1
listl=len(templist)
k=0
reslist=[]
ysflist=[]
while k<listl:
if str(templist[k]).isdigit():
reslist.append(templist[k])
k=k+1
elif templist[k] in ('+','-'):
if len(ysflist)>0:#运算符栈不空
ysf=ysflist.pop()
yz_r=reslist.pop()
yz_f=reslist.pop()
if ysf=='+':
res=yz_f+yz_r
elif ysf=='-':
res=yz_f-yz_r
reslist.append(res)
ysflist.append(templist[k])
k=k+1
elif templist[k]=='*':
yz_f=reslist.pop()
yz_r=templist[k+1]
res=yz_f*yz_r
reslist.append(res)
k=k+2
elif templist[k]=='/':
yz_f=reslist.pop()
yz_r=templist[k+1]
res=yz_f//yz_r#整除
reslist.append(res)
k=k+2
if len(ysflist)>0:
yz_r=reslist.pop()
yz_f=reslist.pop()
if ysflist[0]=='+':
res=yz_f+yz_r
elif ysflist[0]=='-':
res=yz_f-yz_r
reslist.append(res)
return reslist[-1]