【发布时间】:2020-11-17 18:05:31
【问题描述】:
如何获取 ((2*3)+(3-1))+(4/2)) 这样的计算字符串并在 python 中返回答案?
我不能使用 eval 函数。 输入的短语应包括括号。 程序在计算时必须考虑优先级。
【问题讨论】:
-
这能回答你的问题吗? Safe expression parser in Python
标签: python python-3.x string list operators
如何获取 ((2*3)+(3-1))+(4/2)) 这样的计算字符串并在 python 中返回答案?
我不能使用 eval 函数。 输入的短语应包括括号。 程序在计算时必须考虑优先级。
【问题讨论】:
标签: python python-3.x string list operators
使用eval。像这样:ans = eval('((2*3)+(3-1))+(4/2))')
【讨论】:
exec('x =((2*3)+(3-1))+(4/2)) ') 一样使用exec 来“作弊”,然后访问变量x。如果这也不好,您需要为此创建自己的函数。
为此,您必须使用eval() 函数。它将一个字符串变成一个python代码。一种应用它的方法是
def convert_to_code(some_string):
return eval(some_string)
user_input = input()
result = convert_to_code(user_input)
print(result)
我发现在需要多次更改变量 x 的数学方程的情况下,使用返回 eval() 的专用函数更容易。例如,如果您知道数值方法,那么当您尝试创建一个计算多项式根的程序时,我是如何做到的将非常有用。但你可以自己使用eval()。
【讨论】:
使用e = input("Your question :")获取字符串。
您可以使用e = eval(e) 计算字符串,也可以使用print(e) 显示它。
完整代码:
e = input("Your question :")
e = eval(e)
print(e)
【讨论】:
exec函数上看到@user14654909的回复。一个例子:e = input("Your question:");f = exec("e="+e);print(e)