计算器(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判断数组key是否存在
数组中判断key是否存在 可以通过arrayObject.hasOwnProperty(key)来进行判断数组key是否存在,返回的是boolean值,如果存在就返回true,不存在就返回false ...
- 【转】必需知道的 SharePoint 权限 Tips
SharePoint Tips about Permissions: What you need to know I have been writing tips about Shar ...
- spark下统计单词频次
写了一个简单的语句,还没有优化: scala> sc. | textFile("/etc/profile"). | flatMap((s:String)=>s.spli ...
- Sql 基于列的Case表达式
Case表达式可以用在 Select,update ,delete ,set,in,where ,order by,having子句之后, 只是case表达式不能控制sql程序的流程,只能作为基于列的 ...
- 再探Linux动态链接 -- 关于动态库的基础知识
在近一段时间里,由于多次参与相关专业软件Linux运行环境建设,深感有必要将这些知识理一理,供往后参考. 编译时和运行时 纵观程序编译整个过程,细分可分为编译(Compiling,指的是语言到平台 ...
- JAVA远程执行Shell脚本类
1.java远程执行shell脚本类 package com.test.common.utility; import java.io.IOException; import java.io.Input ...
- 12天学好C语言——记录我的C语言学习之路(Day 6)
12天学好C语言--记录我的C语言学习之路 Day 6: 今天,我们要开始学习数组了. //①数组部分,数组的大小不能够动态定义.如下: //int n; scanf("%d,& ...
- props验证
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- (转)RPC原理详解
转自:http://www.open-open.com/lib/view/open1425797146897.html RPC功能目标 RPC的主要功能目标是让构建分布式计算(应用)更加容易,在提供强 ...
- HaProxy+keepalived实现负载均衡
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...