我正在创建一个简单的Python计算器,它使用操作顺序来进行简单的数学运算,并添加平方根和整数除法特性。其概念是用户可以在sqr()
函数中括起他们想要的平方根值(例如,sqr(25)
等于5)。
问题是,我很难从公式字符串中提取这个值。下面是它应该做什么的伪代码:
b = 'sqr(25)+5*3' # equation
# My pseudo-code:
# 1. Identify use of sqr()
# 2. Pull 'sqr(25)' out to be solved
# 3. Pull value (25) out and solve it with math.sqrt()
# 4. Replace 'sqr(25)' with the solved value (5)
#
# b should now be equal to:
# '5+5*3'
我无法从
sqr()
中提取值并将其放回正确的位置。我试着上网,但这似乎是一个更模糊的问题。 最佳答案
您可以使用re.sub
模块中的re
来解决您的问题。首先,让我们定义一个简单的helper函数,它接受一个数字字符串并计算平方根,然后返回一个字符串:
def str_2_sqrt(s):
return str(math.sqrt(int(s)))
现在对于困难的部分,我们将使用一个定制lambda函数来调用
re.sub
,并将结果放回字符串中:>>> re.sub(r'sqr\((\d+)\)', lambda x: str_2_sqrt(x.group(1)), b)
5.0+5*3