【问题标题】:Python: Eval with undefined variables (2*x+x = 3*x)Python:带有未定义变量的评估(2*x+x = 3*x)
【发布时间】:2015-08-30 00:54:52
【问题描述】:

我正在寻找一种方法来计算可能包含变量的字符串。 eval 不会做这项工作,因为我想使用未定义的变量。我说的是一个函数,例如,它会将"2*3*x" 转换为"6*x"

有这样的功能吗?

【问题讨论】:

    标签: python variables placeholder


    【解决方案1】:

    您可以使用sympy 进行符号计算:

    In [126]: import sympy as sy
    
    In [127]: sy.simplify('2*x+x')
    Out[127]: 3*x
    

    要将有理数转换为浮点数,请使用sy.nfloat

    In [170]: sy.nfloat(sy.simplify('2*3+x+3/4'))
    Out[170]: x + 6.75
    

    【讨论】:

    • 不,不是,抱歉。我正在寻找可以与变量并排计算数字的东西。但是当我输入 2*3+x+3/4 时,它会分开计算不同的计算:x + 27/4。有没有办法彻底解决这些问题?
    • 2*3+x+3/4 的期望输出是什么?请编辑 Q 以阐明您想要什么。
    • x+6.75 会不会。有没有办法将分数变成字符串中的浮点数?
    • 现在就是这样。非常感谢^^ :)
    【解决方案2】:

    我可能完全误解了你的问题,但你在 OP 中说:我说的是一个函数,它会变成 2*3*x to 6*x 如果这是您需要的,那么这很容易,只需使用括号:

    (2*3)*x
    

    【讨论】:

    • 您理解上面显示的问题。但它被一个mod改变了。我刚改回来。我正在寻找一种方法,在字符串中完成所有这些操作。
    • 在字符串中到底是什么意思?
    • "(2*3*x)" -> "6*x" 没有 eval 或 exec。
    • 您的意思是要打印出字符串中的数字?
    猜你喜欢
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多