Я пытаюсь оценить эту строку. «1 + 2^4 * 4 * (4 + 4 * 9) -10»Оценить строку "1 + 2^4 * 4 * (4 + 4 * 9) -10"
Моя стратегия - взять каждый элемент, поместить его в список, преобразовать в правильный тип данных (int) или оператор, объединить и затем оценивать. Я пытаюсь избежать использования eval(), и ast.literal_eval() выбрасывает «неверную ошибку строки». Я сейчас застрял в точке, где мне нужно преобразовать своих операторов из строк в операторы.
Вот что я сделал до сих пор:
equation = ("1+2^4*4*(4+4*9)-10")
listint1 = 0
listint2 = 1
finallist = []
for elements in equation:
finallist.append(equation[listint1:listint2])
listint1 = listint1 + 1
listint2 = listint2 + 1
finalfinallist = []
for element in finallist:
if element.isdigit() == True:
finalfinallist.append(int(element))
else:
finalfinallist.append(element)
for element in finalfinallist:
if element == str:
if element == "+":
element = +
elif element == "^":
element =^
elif element == "*":
element = *
elif element == "("
element = (
elif element == ")":
element =)
elif element == "-"
element = -
print finalfinallist
Мысли?
Помогает ли это? https://gist.github.com/nava45/6333409#file-infix-expression-evaluation – nehemiah