我想制作一个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