首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于平衡圆括号的函数

用于平衡圆括号的函数
EN

Stack Overflow用户
提问于 2017-08-19 18:35:07
回答 2查看 172关注 0票数 2

我正在尝试实现一个函数,用于将给定数学方程的括号作为字符串进行平衡。它应该改变字符串,而不仅仅是检查它是否平衡。

因为数学方程可以包含三角函数,所以我想在这些函数后面添加radians(),因为在Python语言中,三角函数将输入作为弧度,而我想要度数。

所以tan(65)变成了tan(radians(65))

cos(65) + sin(35)成为cos(radians(65)) + sin(radians(35))

cos((30 - 10) * 2)成为cos(radians((30 - 10) * 2))

到目前为止,我所做的是使用replace()cos(radians(替换cos(,用sin(radians(替换sin(,对于所有其他三角函数也是如此。但问题是,字符串(这是一个数学方程式)变成了括号-不平衡。

我怎么写一个函数来解决这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2017-08-19 18:54:23

您可以用cosdeg替换cos并定义:

代码语言:javascript
复制
def cosdeg(x):
   return cos(radians(x))

或者(lambda版本):

代码语言:javascript
复制
cosdeg = lambda x : cos(radians(x))

并且以与其它trig函数类似的方式。

票数 2
EN

Stack Overflow用户

发布于 2017-08-19 18:50:22

下面是在适当位置插入radians(并保持括号平衡的算法概述。如果圆括号事先确实是平衡的,并且在字符串文字中没有不平衡的括号,例如len("abc(d"),这将会起作用。然而,这看起来并不可怕。

不要只使用replace()。相反,可以使用find()来查找cos(或其他触发器函数用法。将计数器设置为零。然后扫描紧跟在左括号后面的字符串,即右边cos(中的(。当遇到左括号时,计数器递增1;当遇到右括号时,计数器递减1。当你的计数器到达-1时,你已经找到了触发器函数的右括号。在该位置插入一个新的右括号,然后在触发器函数后面插入您的radians(

继续执行此操作,直到处理完字符串中的所有trig函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45770489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档