与えられた数式のかっこを文字列としてバランスさせる関数を実装しようとしています。バランスが取れているかどうかだけでなく、文字列を変更する必要があります。カッコのバランスをとる機能
数式には三角関数が含まれる可能性があるので、この関数の後に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))
なり、私がやったことはsin(radians(
でcos(radians(
とcos(
、sin(
を置き換えるためにreplace()
を使用し、同じことがすべての残りの三角関数のために行くされています。しかし、問題は、文字列(数学方程式)がかっこ - 不均衡になることです。
この問題を解決する関数を作成するにはどうすればよいですか?
'cos(0)'は有効ですが検出されません( 'cos'と'( ')の間に空白があります)おそらく正規表現が必要になるでしょう: – jp48
@ jp48: OPはアルゴリズムの試行でその可能性を考慮しなかった。文字列は何らかの形で前処理されている可能性を排除するか、 'cos'を' cos(ラジアン) 'や'おそらく、私はそのような詳細を私の答えに含めるべきでしたが、私はそれらを残して答えを "アルゴリズムの概要"と呼ぶことにしました。私は答えに細部の正確な量を持っていて、時にはオーバーシュートやアンダーシュート –
@ jp48:正規表現について少しは知っていますが、関数とそれに対応する閉じ括弧の両方を見つける方法がわかりません。どのようにすることができますか?それは完全な答えの価値があるでしょう。 –