计算器(console version)

题目描述

请用python编写一个计算器的控制台程序,支持加减乘除、乘方、括号、小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算。

输入描述

  1. 数字包括"0123456789",小数点为".",运算符包括:加("+"),减("-"),乘("*"),除("/"),乘方("^"),括号("()")
  2. 需要从命令行参数读入输入,例如提交文件为main.py,可以用python main.py 1+2-3+4的方式进行调用
  3. 输入需要支持空格,即 python main.py 1     +     2      -     3    +    4 也需要程序能够正确给出结果

输出描述

  1. 数字需要支持小数点,输出结果取10位有效数字,有效数字位数不足时不需要补0
  2. 对于格式不合法(例如括号不匹配,等等)的输入,输出 FORMAT ERROR
  3. 对于不符合运算符接收的参数范围(例如)的输入,输出VALUE ERROR
  4. 对于不在输入描述内的输入,输出INPUT ERROR

限制

所有测试用例中参与运算的非零数字输入的绝对值范围保证在 10^9-10^(-10) 之内, 应该输出运算结果时非零运算结果绝对值也保证在该范围内

样例

输入: 1 + 2 - 3 + 4

输出: 4

输入: 1 + 2 - 3 + 1 / 3

输出: 0.3333333333

输入: 1 + + 2

输出: FORMAT ERROR

输入: 1 / 0

输出: VALUE ERROR

输入: a + 1

输出: INPUT ERROR

 

俺的程序评分后再上传。

程序编写时知识点:

--sys.argv

--getcontext().prec    Decimal() 

--逆波兰算法Reverse Polish Notation

--list.append()和list.pop()来出入栈

转载于:https://www.cnblogs.com/jack-xu/p/4846878.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值