python怎么显示数学表达式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么显示数学表达式?相关的知识,希望对你有一定的参考价值。

参考技术A 如果你使用QTConsole的话,你可以自定义一个_repr_latex_方法改变输出。
举个例子:
class Latex_print():
def __init__(self,text): #text为你要输出的LaTex语法数学公式
self.t=text
def _repr_latex_(self):
return "$$%s$$" % self.t.strip('$') #给公式前后添加两个“$$”
text=Latex_print('\sum_i=0^ni^2')
text #或者异端地直接当函数用:Latex_print('\sum_i=0^ni^2')

如何取出包含数学表达式并给出结果的字符串的某些部分

我正在为一个不和谐机器人的命令工作: 有人类型/calc (some-math-expression),例如。 /calc 4+5。 我想评估4+5并显示答案。为此,我相信我必须从字符串中取出'4+5',计算它并返回答案。我该怎么做?

我试过这样做,这可能是愚蠢的,我是新手。 (我正在使用else if因为我有机器人的其他输入)

else if (message.content === '/calc' + exp) {
    return Number(exp);
}

显然,这并没有将'(some-math-expression)'分配给我之前定义的exp var。 机器人没有输出。

有没有一种方法可以将字符串拆分为/calc以及我可以自动分配给变量的其他内容?

谢谢!

答案

虽然this answer可以工作,但这可能会以恶意的方式使用:代码将运行字符串中的所有内容,因此如果有人写出正确的内容,他们可以将代码插入到机器人中,使其容易受到攻击。例如,他们可以使用/calc client.destroy()将其关闭,或者使用/calc client.token读取其令牌:最好不要让eval命令公开访问。

而不是那样,我会使用更安全的方法,使用mathjs包。 NPM

您可以像在其他答案中所述解析表达式,然后使用math.eval()使其解析表达式。你可以找到文件here

这是一个简单的例子:

var mathjs = require("mathjs");

let cmdString, mathExpression;

// This will just return the expression
function getExp(command = '') {
    return command.split('/calc')[1].trim();
}

cmdString = "/calc4+5"; // If this is the command...
mathExpression = getExp(cmdString); // ...this will be '4+5'
// Make the result with mathjs.eval()
let result = mathjs.eval(mathExpression); // 9

这是一种简单的方法,即使在sqrt()cos()等更复杂的操作中也能正常工作。它也可以使用想象中的数字和各种各样的东西,没有人会问到Discord机器人。

您可以使用RunKit尝试该软件包:link

另一答案

解析输入的最简单方法是使用String.split。那是...

const words = message.content.split(' ');
const command = words[0];
const variables = words.splice(1).join(' ');

这里命令将变为'/ calc',变量将变为'4 + 5'

这是有效的,因为在你需要你的discord bot处理的任何输入中,第一个单词将始终是命令。

另一答案

let message = '/calc 4+5'

let equation = message.replace(//calc/, '').trim();
let answer = eval(equation)
console.log(equation+' =', answer )
另一答案

我不知道你是如何获得message.contentexp的。但是,根据我的理解,你可以做如下的事情:

let cmdString = "/calc4+5";
let mathExpression = cmdString.split("/calc")[1];
let result = eval(mathExpression);

result是你的结果值的表达式。

谢谢...

以上是关于python怎么显示数学表达式?的主要内容,如果未能解决你的问题,请参考以下文章

python---数学表达式的分析树实现

数学英文表达!拜托咯!

学Python应该怎么学

将数学表达式转换为python表达式?

python3中括号的数学表达式语法验证器

如何取出包含数学表达式并给出结果的字符串的某些部分