【问题标题】:Obtaining a function given by the user in Python在 Python 中获取用户给定的函数
【发布时间】:2021-11-08 08:23:14
【问题描述】:

我在使用parse_expr sympy 函数读取函数时遇到问题。 以下是我的使用方法:

from sympy import*
import sympy as smp
import numpy as np
from sympy.parsing.sympy_parser import parse_expr
print("Welcome...")
x=smp.Symbol('x')
function=input("Enter your function in terms of X\nIf you want to use Fixed point method input de G(x) expresion\n")
function=parse_expr(function, x)

这就是我得到的:

Welcome...
Enter your function in terms of X
If you want to use Fixed point method input de G(x) expresion
2*x

Traceback (most recent call last):
  File "c:\Users\jp159\Desktop\Desktop\Studies\Exercises.py", line 8, in <module>
    function=parse_expr(function, x)
  File "C:\Users\jp159\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\parsing\sympy_parser.py", line 988, in parse_expr
    raise TypeError('expecting local_dict to be a dict')
TypeError: expecting local_dict to be a dict

【问题讨论】:

  • 返回并阅读该功能的文档!
  • 好吧,如果这对我来说是解决方案,一个刚接触编码的人,我早就解决了,你不觉得吗?
  • @JuanArango 仍然,x 看起来一点也不像 local_dict (ref)
  • 好吧,我认为它们的含义与字面词典不同,但还是谢谢。
  • 我不希望新程序员完全理解函数文档,但我希望看到他们努力。在这种情况下,“dict 是什么意思?”

标签: python function parsing typeerror sympy


【解决方案1】:

在使用以下命令初始化的 isympy 会话中:

>>> from __future__ import division
>>> from sympy import *
>>> 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)
>>> init_printing()

Documentation can be found at https://docs.sympy.org/1.8/

由于 local_dict 是可选的,我们可以省略它:

In [1]: parse_expr('2*x')
Out[1]: 2⋅x

但我们可以创建一个 dict - 引用已定义的符号之一:

In [4]: parse_expr('2*x',{'x':x})
Out[4]: 2⋅x

In [5]: parse_expr('2*x',{'x':y})
Out[5]: 2⋅y

我也可以使用看起来不像任何已定义符号的字符串:

In [7]: parse_expr('2*X')
Out[7]: 2⋅X

In [8]: _.free_symbols
Out[8]: {X}

新程序员的一项关键技能是阅读文档。是的,这通常很难理解,但它仍然应该是第一站。 SO(和一般的网络搜索)应该会在以后出现。

sympy 是用 Python 编写的,因此假定您具备该语言的基本知识。

【讨论】:

    猜你喜欢
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2018-03-30
    相关资源
    最近更新 更多