我们如何使用eval(表达式)求解平方根



我想制作一个gui计算器,它通过按钮将输入作为字符串

按钮将其内容转移到一个功能,在该功能中,它们只连接和

我使用了eval()函数来求解我通过entry.get()得到的表达式

有人能告诉我们如何在=2+346-677*78/6+√567+7这样的表达式中求解平方根吗。。。类似的事情,只使用eval()或在代码或表达式中进行任何其他编辑,这将有助于eval()解决平方根问题,也可以通过按钮以形式输入

使用math.sqrt()

from math import sqrt
print(eval("2+346-677*78/6+sqrt(567)+7"))

输出

-8422.188238200419

或者,如果您只想要包含的号码,您可以尝试以下

from math import sqrt
import re
stringEx = "2+346-677*78/6+√567+7"
solved = [sqrt(float(sqrts)) for sqrts in [x.replace('√','') for x in re.split('[+-]',stringEx) if '√' in x]]

输出

[23.811761799581316]

您也可以使用Regex:

import re
import math
def replace(expression):
# Replace the sqrt symbol with the sqrt funcion from the math module
return eval(re.sub(r'√(d+)', r'math.sqrt(1)', expression))

print(replace("√100"))                  # 10.0
print(replace("√25 + √36"))             # 11.0
print(replace("2+346-677*78/6+√567+7")) # -8422.188238200419

请注意,这将不适用于复杂的表达式:

print(replace("√(3**2 + 4**2)")) 
# raises SyntaxError: invalid character in identifier

相关内容

  • 没有找到相关文章

最新更新