Lua 分子量计算器

作为我在 Lua 中的第一个真正的程序,我想创建一个分子量计算器(类似于这个网站上的:http://www.lenntech.com/calculators/molecular/molecular-weight-calculator.htm

我需要有关此程序的_第一步_的一些帮助。我的第一步应该是将用户输入作为字符串,并将其拆分。我正在查看 http://lua-users.org/wiki/StringLibraryTutorial 并尝试弄清楚如何做到这一点。当用户输入为 CH4 时,程序应将此字符串拆分为“C”和“H4”。这是我的代码:

H   = 1.008
C   = 12.011
N   = 14.007
O   = 15.999

io.write("Enter molecular formula")
input = io.read()

result =
print("the molecular weigth is" .. result)

有人可以向我展示如何将用户输入作为字符串接受以及如何拆分该字符串吗?

编辑: 根据要求,我已经更具体地描述了我的精确问题

点赞
用户1009479
用户1009479

以下是一个可能的起步方案:

  1. 从标准输入获取输入字符串:

    input = io.read()
    
  2. 将类似于 Cr(NO2)2 的字符串转换为字符串 Cr+(N+O*2)*2。化学元素名称的特性是它们都以大写字母开头,后面跟着零个或多个小写字母,因此规则可以是:每当遇到大写字母或 "("(除非它是第一个或者前面有 "("),在它之前插入 "+",每当遇到数字时,在它之前插入 "*"

  3. 从字符串 Cr+(NO*2)*2 计算结果,这是 Lua 的美妙之处,它是一个合法的 Lua 表达式,所以只需加载字符串并得到结果:

    str = "Cr+(N+O*2)*2"
    func = assert(load("result = " .. str))
    func()
    
    print("分子量为" .. result)
    

在 Lua 5.1 中,可以将 load() 替换为 loadstring()

2014-04-03 03:43:03