0X20自定义计算器
前置知识
正文
- 继续前一节内容中的问题。写一个脚本,从命令行读入圆柱体的高和半径,返回其体积。圆柱体的计算公式是圆周率乘以半径的平方再乘以高。
- 我将大致介绍编程思路并给出源码。如果有任何细节问题不明白,请翻看之前的内容,使用搜索引擎查找。确认无法解自己短期内决后在评论区留言。
- 我这里给出的思路不一定是最优也不一定最好。如果你觉得我的代码不够好,应该尝试自己写一个更好的版本。
- 整个程序按照要求大致可以分为获取输入值,计算体积,输出体积。
- 由于计算体积和输出体积的代码相对简单,不单独写一个函数。
- 获取输入值和把字符串转换为数字封装为一个函数。
- 定义获取输入的数值的函数。
- 首先我们应该明白输入的数值会以字符串形式传回,我们需要进行类型转换。
- 其次我们应当在用户输入前输出一些文字作为提示,防止输入错误的内容。
- 最后,但是很重要的一点,如果用户输入了不能转化为数字的字符串。我们的程序不能因此崩溃。我们要设置相应的处理措施。比如,给返回值设置默认值。当输入值非法的时候,返回0。
- 获取输入的函数:
>
>require('io')
>
>function getInput()
> local temp,r,h
> print('Please input radius:')
> temp=tonumber(io.read())
> if temp==nil then
> r=0
> else
> r=temp
> end
> print('Please input height:')
> temp=tonumber(io.read())
> if temp==nil then
> h=0
> else
> h=temp
> end
> return r,h
>end
>
注意,这里的local是用于说明temp,r,h是局部变量。这会在0X1D变量作用域中做介绍。你的程序中不必要包含这一句。但是加上这句可以防止一些误修改。
- 定义好getInput函数之后写,脚本的其余部分。由于定义好了这个函数,所以剩下的部分会相对简洁:
>
>require('math')
>r,h=getInput()
>V=math.pi*r^2*h
>print('The volume is '..V)
>
- 现在保存脚本文件,试运行。
- 演示:运行脚本
sss!!!!!!!!<>
- 这个程序还有很多可以优化、改进、拓展的地方。我将选择一点作为下一节的主题——输出数据的格式。这里我们会得到一个尽量精确的输出数值。但是如果我希望仅仅显示小数点后两位应该怎么做?这就是下一节的内容。
后续推荐