第三章:Creating Utilities--24.一个交互式的计算器
2019独角兽企业重金招聘Python工程师标准>>>
之前写了第九个脚本,允许命令行调用bc进行浮点计算,所以现在必然要写一个交互式的,基于命令行的计算器封装脚本。它有一个优点:即使加上帮助信息,也很短。
#!/bin/sh# calc.sh -- 一个看起来像是bc的前端的命令行计算器scale=2show_help(){cat << EOFIn addition to standard math function, calc also supportsa % b remainder of a/ba ^ b exponential: a raised to the b powers(x) sine of x, x in radiansc(x) cosine of x, x in radiansa(x) actangent of x, returns radiansl(x) natural log of xe(x) exponential log of raising e to the xj(n, x) bessel function of integer order n of xscale N show N fractional digits(default = 2)EOF}if [ $# -gt 0 ]; thenexec scriptbc.sh "$@"fiecho "Calc - a simple calculator. Enter 'help' for help, 'quit' to quit."echo -n "calc> "while read command args # 像不像Python的顺序解包docase $command inquit|exit) exit 0;;help|\?) show_help;;scale) scale=$args;;*) scriptbc.sh -p $scale "$command" "$args";;esacecho -n "calc> "doneecho ""exit 0
脚本如何运行:
可能这个脚本最有意思的部分就是那个while循环了。它创建一个calc>的提示,直到用户完成输入。当然,这个脚本的间接性成就了它自己:shell脚本并不需要特别的复杂。
运行脚本:
这个脚本跑起来非常简单,因为它是一个交互式的,可以提示用户完成特定操作。如果有参数传递给它,它就转而把这些参数传给scripbc.sh。
运行结果:
calc 150 / 3.5 42.85 ./calc.sh Calc - a simple calculator. Enter 'help' for help, 'quit' to quit.calc> helpIn addition to standard math function, calc also supportsa % b remainder of a/ba ^ b exponential: a raised to the b powers(x) sine of x, x in radiansc(x) cosine of x, x in radiansa(x) actangent of x, returns radiansl(x) natural log of xe(x) exponential log of raising e to the xj(n, x) bessel function of integer order n of xscale N show N fractional digits(default = 2)calc> 54354 ^ 3 160581137553864 calc> quit
转载于:https://my.oschina.net/u/578519/blog/100983
第三章:Creating Utilities--24.一个交互式的计算器相关推荐
- 读书笔记: C# 7.0 in a nutshell (第 三 章 Creating Types in C#)
内容: 第三章: C#中创建类型 类 继承 object类型 struct 访问修饰符 接口 枚举 嵌套类 泛型 1. Classes 典型的class定义: class YourClassName ...
- C# 线程手册 第三章 使用线程 实现一个数据库连接池(实战篇)
在企业级软件开发过程中,为了改善应用程序的性能需要通常使用对象池来控制对象的实例化.例如,在我们每次需要连接一个数据库时都需要创建一个数据库连接,而数据库连接是非常昂贵的对象.所以,为了节省为每次数据 ...
- mysql第三章关系模型_一个MySQL关系模型只有三个关系(二维表)组成。_学小易找答案...
[判断题]DELETE语句功能是对表中所有记录或满足条件的记录进行批量删除. [填空题]The computer's entire ____ was on a single board. [单选题]下 ...
- 第三章 达瑞,一个很能挣钱的男孩
"在达瑞8岁的时候,有一天他想去看电影.因为没有钱,他面临一个基本的问题,是问爸妈要钱还是自己挣钱.最后他选择了后者." 不要太容易放弃了,连试一下都不愿意.总是首先想,什么事是做 ...
- 使用c语言编程首先要新建,【C语言编程入门系列】—— 第三章,编写第一个C语言程序!...
导读:一般学一门计算机语言的第一堂上机课("上机"顾名思义,上计算机,机你太美),就是往屏幕输出"hello world",本章也不例外. 3.1 Hello, ...
- 第三章 函数——自己定义一个函数
目录 def语句和参数 返回值和return语句 None值 关键字参数和print() print(,end='') print(,sep='') 局部和全局作用域 global语句 异常处理 第一 ...
- P1P2P3口接24个灯流水的c语言代码,第三章单片机并行口c语言程序设计.ppt
第三章单片机并行口c语言程序设计 3.1 80C51的并行口结构与应用 3.1.1 P0口.P2口的结构 1.P0口作通用的I/O口使用. 这时,CPU发来的"控制"信号为低电平, ...
- 交互式计算机图形学总结:第三章 几何对象和变换
第三章 几何对象和变换 基本概念 –零向量:长度为零,方向没有定义 –向量空间:包含向量和标量 –仿射空间:包含向量.标量.点 –计算机科学的观点:把向量.标量.点看作抽象数据类型(ADT) –凸性: ...
- )类 新建javafx程序时_第三章 第一个OpenCV的JavaFX应用程序.md
# 第三章 第一个OpenCV的JavaFX应用程序 --- ***注意***:我们假设您现在已经阅读了之前的教程.如果没有,请在[http://opencv-java-tutorials.readt ...
最新文章
- vlookup示例_VLOOKUP示例–如何在Excel中执行VLOOKUP
- 终于知道10月27-28-29这3天为什么调整了
- 2246xt u盘开卡详细教程_U盘制作PE及系统安装详细教程!
- ubuntu16.04卡在了’SMBus Host Controller not enabled‘
- Spring5参考指南:Bean的创建
- Javascript let和const
- 【WPF】TextBox样式重写注意事项
- EOJ 306 树上问题
- Repeater 控件的嵌套使用
- iOS appicon 与 launchImage 尺寸一览
- (已解决)ubuntu下网易云音乐无法打开
- 全球及中国冻干菠萝行业市场运行模式及未来发展前景分析报告2022-2028年
- MySQL Java的JDBC编程
- 2021年焊工(初级)考试报名及焊工(初级)实操考试视频
- 爬取京东辣条商品详情
- ActiveMQ 无法访问管理页面
- apipost中文版
- 微信小程序中使用iconfont阿里巴巴矢量图标
- python pip install 安装
- CSS3多列布局 columns 弹性布局 flex
热门文章
- AJPFX关于Set接口学习笔记及总结
- SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)
- tomcat运行模式APR安装
- max_connect_error的说明
- Redis事件驱动库转
- 从零开始学习Sencha Touch MVC应用之八
- Linux系统备份策略探讨
- Oracle database 11g 安装 - 配置企业管理器database control失败
- 在长沙怎么挑选装饰公司
- 移动端web页面列表类上拉加载,查看详情,iframe嵌套第三方页面遇到的问题以及解决办法...