0

SPOJ の問題を解決しているときに、プログラマーが優先順位を使用せずに式を評価する必要があるという問題に遭遇しました。つまり、次のことを意味します。

2 + 3 * 6=30 and not 20

これを行う方法はありますか?
このためのライブラリまたは組み込み関数はありますか?

4

1 に答える 1

2

(2+3)*6 のようなことができると思いますが、それは醜いです。その根本的な解決策はないと思います。場合を除き... 独自の関数を作成する場合。次のようにする必要があります。

def functionname(strng):
    strng = strng.split()[::-1]
    startval = strng.pop()
    while len(strng):
        op = strng.pop()
        val = strng.pop()
        startval = str(eval(startval + op + val)
    return startval

これも理想的ではありませんが、何もないよりはましだと思います。

于 2013-10-14T17:09:50.650 に答える