使用计算器脚本的 Lua

我试图创建一个供自己使用的计算器。我不知道如何让用户输入例如6时,可以让用户输入6个数字。所以如果我写了7,它会让我有一个选项来写7个数字然后给我答案,如果我写了8它将让我写8个数字...

如果选择是“2”,那么
      要求用户输入“数字的数量”
      amountNo = io.read("*n")
      如果amountNo <= 2,则打印“你不能少于2个数字。”
      否则,如果amountNo >= 14,则打印“不能计算超过14个数字。”
      否则,如果amountNo <= 14且amountNo >= 2,则
          amountNmb = amountNo
          如果amountNmb = 3,则打印“数字1”
          打印“通过逗号分隔输入数字。”
      打印“答案是。。。”
点赞
用户2226988
用户2226988

io.read 的格式有点局限。

如果您想要键入逗号分隔的列表,我建议先读取整行,然后迭代每个值:

local line = io.input("*l")
local total = 0
-- 捕获一个非逗号字符的序列,然后可能会跟着一个逗号
-- 然后重复直到没有更多的值
for item in line:gmatch("([^,]+),?") do
    local value = tonumber(item)
    -- 如果item不代表一个数字就会抛出错误
    total = total + value
end
print(total)

这不限制值的数量到任何特定的值 - 甚至空列表也可以。 (它是有缺陷的,因为它允许行以逗号结尾,这被忽略了。)

2014-05-20 00:27:25
用户1190388
用户1190388

根据我的理解,您 需要以下代码

print "How many numbers?"
amountNo = io.read "*n"
if amountNo <= 2 then
    print "You can't have less than 2 numbers."
elseif amountNo >= 14 then
    print "Can't calculate more than 14 numbers."
else
    local sum = 0
    for i = 1, amountNo do
        print( ('Enter number %s'):format(i) )
        local nmb = io.read '*n'
        sum = sum + nmb
    end
    print( ('The sum is: %s'):format(sum) )
end
2014-05-20 00:38:26
用户869951
用户869951

如果用户使用逗号分隔数字,则无需声明要添加多少个数字,您只需使用 gmatch 获取所有数字即可。此外,通过正确的模式,您可以确保仅获取数字:

local line = io.input()
local total = 0
-- 匹配任意数量的数字,跳过任何非数字字符
for item in line:gmatch("(%d+)") do
    total = total + item
end

使用输入 '4 , 6 , 1, 9,10, 34'(不包含引号),则 print(total) 将给出 64,即正确答案。

2014-05-20 03:12:35