Skip to content

Latest commit

 

History

History
55 lines (49 loc) · 2.66 KB

0X20自定义计算器.md

File metadata and controls

55 lines (49 loc) · 2.66 KB

0X20 自定义计算器

前置知识

  • 0X1F 读写终端

正文

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

后续推荐

  • 0X21 格式化输出