计算器(console version)
题目描述
请用python编写一个计算器的控制台程序,支持加减乘除、乘方、括号、小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算。
输入描述
- 数字包括"0123456789",小数点为".",运算符包括:加("+"),减("-"),乘("*"),除("/"),乘方("^"),括号("()")
- 需要从命令行参数读入输入,例如提交文件为main.py,可以用python main.py 1+2-3+4的方式进行调用
- 输入需要支持空格,即 python main.py 1 + 2 - 3 + 4 也需要程序能够正确给出结果
输出描述
- 数字需要支持小数点,输出结果取10位有效数字,有效数字位数不足时不需要补0
- 对于格式不合法(例如括号不匹配,等等)的输入,输出 FORMAT ERROR
- 对于不符合运算符接收的参数范围(例如)的输入,输出VALUE ERROR
- 对于不在输入描述内的输入,输出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()来出入栈
计算器(console version)的更多相关文章
- C语言 | 计算器实现 version 2.
在之前版本中使用栈结构来实现,但由于51单片机不支持malloc函数,所以使用C语言又写了一个计算器版本. 通过数组存放值和操作符模拟栈操作. 实现代码: #include <stdio.h&g ...
- 给你的站点加入 console.js
本文仅先给使用console调试的FE同学,假设你还不知道console是什么.或者还停留在alert阶段,那就不要浪费时间了,say bay bay! 你是否试程序的过程中用过console.log ...
- 在控制台进行依赖注入(DI in Console)
首先我们准备两个服务接口 public interface IServiceA { void showConsole(); int GetValue(int val); } public interf ...
- 给你的网站添加 console.js
本文仅先给使用console调试的FE同学,如果你还不知道console是什么,或者还停留在alert阶段,那就不要浪费时间了,say bay bay! 你是否试程序的过程中用过console.log ...
- [No0000AB]用Visual Studio 2015在 WIN10 64bit 上编译7-zip (32 bit)
1.7-ZIP简介 7-zip 是一款免费的压缩解压软件.ZIP格式的文件默认被苹果和微软支持,完全不需要额外安装其他软件就可以解压.但对于非US-ASCII编码的文件名和大于2GB的ZIP文件,可能 ...
- 使用7-zip制作自解压安装包
7-zip制作自解压包很方便,只要在压缩时选择”创建自释放程序”选项. 而自解压安装包有点麻烦,不如WinRAR方便. 准备工具:下载 LZMA SDK 这里面有 7zSD.sfx (16.04版7z ...
- Android_layout 布局(二)
昨天学习了layout 布局的线性布局和相对布局. 今天我们学习剩余的三个布局,分别是: 一.帧布局(FrameLayout) 在这个布局中,所有的子元素都不能被指定放置的位置,它们通通放于这块区域的 ...
- Enable MFA for a user
If you are root/admin account, in order to configure a virtual MFA device, you must have physical ac ...
- osgi 2
基础的API BundleActivator BundleContext ServiceReference HelloServiceFactory ServiceTracker osgi 疑惑: I ...
随机推荐
- js父窗口opener与parent
parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A页面所在窗口就是B页面的parent.在JS 中,window.opener只是对弹出窗口的母窗口的一个引用.比如: ...
- selenium添加源码,解决打开源码不显示问题
问题1: 我已经导入了源码包,单在源码中点击get,想查看源码 WebDriver driver=new FirefoxDriver(); driver.get("http://www.ba ...
- 【转】Android自动化测试之MonkeyRunner录制和回放脚本(四)
测试脚本录制: 方案一: 我们先看看以下monkeyrecoder.py脚本: #Usage: monkeyrunner recorder.py #recorder.py http://mirror ...
- monkeyrunner工具同Monkey工具的差别
Monkey: Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流. monkeyrunner: monkeyrunner工具则是在工作站上通过API定义的特定 ...
- PHP得出附件扩展名
<? $filename = "mypage.asp"; //1 使用strrchr函数求得 $ext = substr(strrchr($filename, '.'), 1 ...
- C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据
#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...
- cl: cannot open file 'kernel32.lib'
在测试 jni时, 使用 cl命令, 如 cl -I xx\jdk1.7.0_17\include -I xx\jdk1.7.0_17\include\win32 -LD HelloNative.c ...
- Aix命令大全
AIX服务器系统命令简介 在AIX操作系统上有很多的命令.这里介绍一些系统级的命令,它将有助于回答一些常见问题.大家以此做参考,并补充修改. 以下命令在AIX 5.1上测试通过. 正文 以下命令在AI ...
- 第十四篇、Ajax与Json
1.Ajax的核心知识 1.1 XMLHttpRequest对象 function loadName(){ var xmlHttp; if(window.XMLHttpRequest){ xmlHtt ...
- C#break、continue、return、goto
1.break break语句会使运行的程序立即退出包含在其中的最内层循环(结束此次循环且结束该循环控制体)或者switch语句 ; ; j < ; j++) { i++; )break; Co ...