"(19 +((91 -96)-13))"などの文字列から式を評価する必要がありますが、私はアルゴリズムを自分で作る必要があります。 eval()などを使用します。Stringからの数式を評価する - Python
私はこのコードでたくさん試みられてきたが、それは私に負の数に問題を与える:
while counter < 1:
chunks = []
counter2 = 1
for character in operation:
if character.isdigit():
if chunks[-1].isdigit(): # If the last chunk is already a number
chunks[-1] += character # Add onto that number
else:
chunks.append(character) # Start a new number chunk
elif character in '+-/*()':
chunks.append(character) # This doesn't account for `1 ++ 2`.
for e in reversed(chunks):
if e == '(':
counter2 = len(chunks) - counter2
break
else:
counter2 = counter2 + 1
if chunks[counter2+2] == '+':
result2 = int (chunks[counter2+1]) + int (chunks[counter2+3])
elif chunks[counter2+2] == '-':
result2 = int (chunks[counter2+1]) - int (chunks[counter2+3])
elif chunks[counter2+2] == '*':
result2 = int (chunks[counter2+1]) * int (chunks[counter2+3])
elif chunks[counter2+2] == '/':
result2 = int (chunks[counter2+1])/int (chunks[counter2+3])
chunks[counter2] = ''
chunks[counter2 + 1] = ''
chunks[counter2 + 2] = str (result2)
chunks[counter2 + 3] = ''
chunks[counter2 + 4] = ''
operation = ''.join(chunks)
は、私はちょうどチェックする必要があるとして、私はそれを更新しています、while条件に注意を払ってはいけません
[PLY](http://www.dabeaz.com/ply/ply)のような適切なレキシング解析ツールを使用すると、 .html)またはLex/Yaccでさえ、あなたの人生をもっと楽にしてくれるでしょう。 –
事は私ができない、私はアルゴリズム全体を作る必要があります。 – Wrong
負の数値にはどのような問題がありますか? –