首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转载: Discord.py &Sympy(我想主要是discord.py )

转载: Discord.py &Sympy(我想主要是discord.py )
EN

Stack Overflow用户
提问于 2021-01-14 12:44:53
回答 1查看 185关注 0票数 1

我在试着做一个数学不和谐机器人。我非常确定我的Sympy代码是正确的,只是discord.py太时髦了。

代码:

代码语言:javascript
复制
@client.command()
async def solve(ctx, equation):
    x, y, z, t = symbols('x y z t')
    k, m, n = symbols('k m n', integer=True)
    f, g, h = symbols('f g h', cls=Function)
    equation = equation.split("=")
    eqn = Eq(parse_expr(equation[0]), parse_expr(equation[1]))
    await ctx.send(f"```{solve(eqn)}```")

请假设我有所有必要的导入。

我得到了这个错误:

代码语言:javascript
复制
Ignoring exception in command solve:
Traceback (most recent call last):
  File "C:\Users\justi_zts5a0w\PycharmProjects\discord.py\venv\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
  File "math.py", line 42, in solve
    eqn = Eq(parse_expr(equation[0]), parse_expr(equation[1]))
  File "C:\Users\justi_zts5a0w\PycharmProjects\discord.py\venv\lib\site-packages\sympy\parsing\sympy_parser.py", line 1008, in parse_expr
return eval_expr(code, local_dict, global_dict)
  File "C:\Users\justi_zts5a0w\PycharmProjects\discord.py\venv\lib\site-packages\sympy\parsing\sympy_parser.py", line 902, in eval_expr
expr = eval(
  File "<string>", line 1
Integer (2 )+Integer (3 )Symbol ('x' )
                         ^
SyntaxError: invalid syntax

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\justi_zts5a0w\PycharmProjects\discord.py\venv\lib\site-packages\discord\ext\commands\bot.py", line 903, in invoke
await ctx.command.invoke(ctx)
      File "C:\Users\justi_zts5a0w\PycharmProjects\discord.py\venv\lib\site-packages\discord\ext\commands\core.py", line 859, in invoke
await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\justi_zts5a0w\PycharmProjects\discord.py\venv\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: SyntaxError: invalid syntax (<string>, line 1)
EN

回答 1

Stack Overflow用户

发布于 2021-01-14 15:24:37

从你得到的错误判断,问题不是来自discord.py,而是来自sympy。从代码的输出来看,这与引入参数equation的方式有关。

我在SymPy Live中做了以下调用,结果很好:

代码语言:javascript
复制
>>> from sympy.parsing.sympy_parser import parse_expr
>>> equation = 'x+1 = 0'
>>> equation = equation.split('=')
>>> eqn = Eq(parse_expr(equation[0]), parse_expr(equation[1]))
>>> print(eqn)
Eq(x + 1, 0)

但是,在您的代码中,它告诉您由于引入了语法,parse_expr无法正确计算表达式。确保您的输入公式具有有效的格式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65713543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档