我正在试图实现一个用于平衡给定数学方程式的括号作为字符串的函数。它应该改变字符串,而不仅仅是检查它是否平衡。用于平衡括号的函数
因为数学方程可以包含三角函数,所以我想在这样的函数后面添加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()
完成与sin(radians(
更换cos(
与cos(radians(
,sin(
,同样的事情也适用于所有的休息三角函数。但问题是,字符串(这是一个数学方程)变成了括号 - 不平衡。
如何编写函数来解决这个问题?
这种方法存在一个问题:'cos(0)'是有效的,但没有被检测到('cos'和'(')之间有一个空格,可能需要一个正则表达式。 – jp48
@ jp48:我想过但是OP没有在他尝试的算法中考虑这种可能性,我假设这个字符串已经以某种方式预处理以消除这种可能性,或者他正在用cos(弧度)或者其他的。也许我应该在我的答案中包含这些细节,但是我决定放弃这些细节并将我的答案称为“算法的概要”。我正在努力在答案中提供适当的细节,并且有时会出现超调或欠调 –
@ jp48:我对正则表达式有一点了解,并且我不知道如何找到函数和它的成对的右括号,怎么做呢?这将是值得一个完整的答案。 –