gpt4 book ai didi

math - 是否可以将 Lua 中的用户输入作为数学运算读取?

转载 作者:行者123 更新时间:2023-12-04 14:47:59 25 4
gpt4 key购买 nike

我正在尝试编写以函数形式接受输入的内容,例如“f(x) = 2*x + 5”,并将其计算为正规方程。

我目前拥有的是:

print("give any function") --vague as placeholder
x=50
str=string.gsub(io.read(), "x", tostring(x))
print(str*1)

当你在输入中有 x 变量时,它工作正常,像以前一样用之前设置的 x 变量替换它。发生的情况是,当您将某些内容放入“1+1”时,它不会接受。

有没有办法让诸如“1+1”之类的输入可以计算为 2,而不仅仅是它给出的字符串?

我在这里基本上要问的是:格式为“number operator number”的任何用户输入都只能读取为字符串,而不是可计算的方程式。任何解决方法?

最佳答案

你可以使用一些更详细的gsub,然后将函数加载为lua代码。由于 1 + 1 的格式并不是真正的“函数”格式,我们需要为函数只是一个操作的情况添加一些额外的处理

function evaluateFunction(funcStr, x)

funcStr = "return " .. funcStr
funcStr, replaced = funcStr:gsub("f%(", "function(")
funcStr = funcStr:gsub("=", "return")

if replaced ~= 0 then
funcStr = funcStr .. " end"
end

print(funcStr)

local func = load(funcStr)()
if type(func) == "function" then
print(func(x))
else
print(func)
end
end

evaluateFunction("f(x) = 2*x + 5", 50)
evaluateFunction("f() = 2*5")
evaluateFunction("1 + 1")

输出:

return function(x) return 2*x + 5 end

105

return function() return 2*5 end

10

return 1 + 1

2

关于math - 是否可以将 Lua 中的用户输入作为数学运算读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69663851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com