代数表达式的格式化

Formatting for algebraic expressions

这是我手动求解这个方程的代码:

b=2
c=3
sum= [[1, 4 + c, 0], [6, 2 + b + c, b]]
[[1, 7, 0], [6, 7, 2]]

这是我得到的输出,它有效,类型:

如何获得相同的输出但作为字符串?我不想将上面的列表类型更改为字符串。

b=2
c=3
sum= "[[1, 4 + c, 0], [6, 2 + b + c, b]]"
'[[1, 4 + c, 0], [6, 2 + b + c, b]]'

为什么这不起作用,它是正确的输出“类型”,但 b 和 c 的值不起作用。

感谢您的帮助。

您可以使用 lambda 或者换句话说使用函数 def 注意:不要使用 sum 作为变量名,因为它是 python.

中的内置函数
b=2
c=3
sum_ = lambda b,c: [[1, 4 + c, 0], [6, 2 + b + c, b]]
sum_(b,c)
[[1, 7, 0], [6, 7, 2]]

这很容易做到。您可以使用 eval() 来评估 python 表达式。从文档中,evalthe source may be a string representing a Python expression or a code object as returned by compile()。如果我没理解错的话,你需要使用 for strings。

例如,

>>> b=2
>>> c=3
>>> sum= "[[1, 4 + c, 0], [6, 2 + b + c, b]]"
>>> result=eval(sum)
>>> result
[[1, 7, 0], [6, 7, 2]]

如果要将其转换为字符串,只需执行 result=str(eval(sum)).

怎么样:

sum = f"[[1, {4 + c}, 0], [6, {2 + b + c}, b]]"

或者这样:

sum = str([[1, 4 + c, 0], [6, 2 + b + c, b]])

甚至这个 (not very recommended):

sum = eval("[[1, 4 + c, 0], [6, 2 + b + c, b]]")