gpt4 book ai didi

python - 如何使用户输入的符号不区分大小写

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:20 25 4
gpt4 key购买 nike

我想避免我制作的 scypy 基本脚本中出现大写锁定错误。 该脚本计算偏导数

from sympy import *
from sympy.parsing.sympy_parser import parse_expr
from sympy.parsing.sympy_parser import standard_transformations, \
x, y, z = symbols('x y z ', real=True)
transformations = (standard_transformations + (implicit_multiplication_application,)
self.eq1 = parse_expr(self.entry_5.get(), locals(), transformations=transformations)
self.dfx = diff(self.eq1, x)
self.dfy = diff(self.eq1, y)
self.dfz = diff(self.eq1, z)

对于此示例,它工作正常,entry_5 是 x ** 2 + y ** 2 + z ** 2

'Partial derivatives calculation:
Partial der by X: 2*x
Partial der by Y: 2*y
Partial der by Z: 2*z

但现在,我尝试使用相同的代码添加大写 X、Y、Z:

.
.
.
x, y, z, X, Y, Z = symbols('x y z X Y Z', real=True)
.
.
.

现在,entry_5 是 - X ** 2 + y ** 2 + z ** 2(大写 x)输出为:

'Partial derivatives calculation:
Partial der by X: 0
Partial der by Y: 2*y
Partial der by Z: 2*z

最佳答案

如果您希望将输入重新转换为小写,以便硬编码的导数始终有效,您可以将输入转换为小写,或者更安全地提供 locals将感兴趣的大写符号重新映射为小写符号。为了清楚起见,我使用 S来表示而不是解析器:

>>> S('x', {'x':'upper'})  # example showing you can replace 'x' with 'upper'
upper
>>> S('X', dict([(str(i), str(i).lower()) for i in symbols('X:Z')]))
x

在您的代码中,您必须使用我的示例中使用的 dict() 更新您的本地变量:loc = locals(); loc.update(dict([(str(i), str(i).lower()) for i in symbols('X:Z')]))并使用loc而不是locals()在您的代码中。

关于python - 如何使用户输入的符号不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256563/

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