在python 3.7中计算数学字符串

在python 3.7中计算数学字符串,python,math,expression,formula,python-3.7,Python,Math,Expression,Formula,Python 3.7,我正在寻找一个专门用于python 3.7的函数。我有一个字符串中的数学表达式: str="2^10" #Expected output: 1024 Python3.7中是否有内置函数对其进行评估 附言:eval()函数不起作用。Python中幂运算的符号是**,而不是^。所以,首先改变你的字符串 str_ ="2^10" print(eval(str_.replace('^', '**'))) # -> 1024 请注意,eval是一种潜在的非常危险的功能。不要盲目使用。

我正在寻找一个专门用于python 3.7的函数。我有一个字符串中的数学表达式:

str="2^10"   #Expected output: 1024
Python3.7中是否有内置函数对其进行评估


附言:eval()函数不起作用。

Python中幂运算的符号是
**
,而不是
^
。所以,首先改变你的字符串

str_ ="2^10"

print(eval(str_.replace('^', '**')))  # -> 1024
请注意,
eval
是一种潜在的非常危险的功能。不要盲目使用。


更安全的方法是使用(非标准)模块
numexpr

import numexpr

print(numexpr.evaluate(str_.replace('^', '**')))  # -> 1024

还请注意,如果不将
“^”
替换为
“**”
,则会导致
8
。这是因为Python中的幂运算符号是
**
,而不是
^
。所以,首先改变你的字符串

str_ ="2^10"

print(eval(str_.replace('^', '**')))  # -> 1024
请注意,
eval
是一种潜在的非常危险的功能。不要盲目使用。


更安全的方法是使用(非标准)模块
numexpr

import numexpr

print(numexpr.evaluate(str_.replace('^', '**')))  # -> 1024
还请注意,如果不将
“^”
替换为
“**”
,则会导致
8
。之所以会这样,是因为在Python中,
^

我很确定它是有效的。然而,您可能正在寻找
str=“2**10”
我很确定它是有效的。但是,您可能正在寻找
str=“2**10”