求該題程式碼
且需要使用stack
計算五則運算式的結果,包含加、減、乘、除、餘
輸入說明 :
輸入一個字串,其中包含運算元及運算子,為了方便讀取,所有的運算子及運算元均以空格區隔。
運算元皆為正整數
運算子則包含 + - * / %
運算時請注意”先乘除(餘)後加減”的計算規則
輸出說明 :
輸出結果。為了避免小數點誤差,所有的運算過程都不會產生小數點,可以放心使用整數進行運算
注意 :
此題為練習 stack 的應用,請勿使用 eval 函式來進行解題。
若未使用 stack 作答作業,將不予計分。
Sample Input:
3 + 5 - 7 - 4
Sample Output:
-3
Sample Input:
3 + 6 / 2 + 9 / 3 - 4
Sample Output:
5
Sample Input:
3 + 6 / 2 * 3 - 4 % 3
Sample Output:
11
Python-五則運算
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- soar3033 2022-01-11 08:27关注
class stack: def __init__(self):#初始化 self.s=[] def pull(self,n):#入栈 self.s.append(n) def out(self):#出栈 if len(self.s)>0: t=self.s[-1] del(self.s[-1]) return t else: return None def l(self):#返回栈内长度 return len(self.s) s1=stack()#栈1,存储读入运算式 s2=stack()#栈2,辅助运算 s=input("").split(' ')#读取输入并入栈 for i in range(len(s)): s1.pull(s[len(s)-i-1]) while 1:#第一次轮栈操作 t=s1.out() if t==r'/' or t==r'*' or t==r'%': t1=int(s1.out()) t2=int(s2.out()) if t==r'/': t3=t2/t1 if t==r'*': t3=t2*t1 if t==r'%': t3=t2%t1 s2.pull(t3) else: s2.pull(t) if s1.l()==0: break while s2.l()>0: t=s2.out() s1.pull(t) while s1.l()>1: t1=int(s1.out()) t2=s1.out() t3=int(s1.out()) if t2==r'+': t=t3+t1 if t2==r'-': t=t1-t3 s1.pull(t) print(s1.out())
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?
- ¥15 r语言神经网络自变量重要性分析
- ¥15 基于双目测规则物体尺寸
- ¥15 wegame打不开英雄联盟
- ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
- ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
- ¥30 eclipse开启服务后,网页无法打开
- ¥30 雷达辐射源信号参考模型
- ¥15 html+css+js如何实现这样子的效果?
- ¥15 STM32单片机自主设计