我正在試圖實現一個用於平衡給定數學方程式的括號作爲字符串的函數。它應該改變字符串,而不僅僅是檢查它是否平衡。用於平衡括號的函數
因爲數學方程可以包含三角函數,所以我想在這樣的函數後面添加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:我對正則表達式有一點了解,並且我不知道如何找到函數和它的成對的右括號,怎麼做呢?這將是值得一個完整的答案。 –