2015-06-14 2 views
-3

У меня есть схема расчета как строкуPython инициализации строки в переменной

calc = "((k+m+46)/2)" 

и некоторые строки, содержащие переменную как

m = 2 
k = m*2 

все только строки. Теперь я хочу инициализировать их в Python. Моя цель - вычислить с помощью расчетной схемы значения переменных.

известково должен вернуть 26

Edit:

Я стараюсь EXEC в ВАР, но в некоторых случаях я должен EXEC к = т * 2 на первом и я получаю ошибку м не определен!

+0

'Exec ('т = 2, к = т * 2; печать ((к + м + 46)/2)')' – Tempux

+0

Генеральный безопасный способ сделать это будет использовать [sympy] (http://www.sympy.org/en/index.html) для оценки символических уравнений. Чтобы преобразовать строку в вычислимые выражения, вы можете использовать [возможности синтаксического анализа] (http://docs.sympy.org/latest/modules/parsing.html). –

+0

'calc should return' ??? Переменные не могут вернуться ... – Zizouz212

ответ

0
#!/usr/bin/python 

m = 2 
k = m*2 
calc = "((k+m+46)/2)" 

result = eval(calc) 

print result 

Результат

26 
0

Простым решением было бы использовать форматированные строки. Вы можете переписать свое уравнение как «calc =» ({m} + {k} + 46)/2 " answer = eval (calc.format (m = 2, k = 4)). Я рекомендую использовать некоторую специализированную библиотеку, как упоминалось выше в комментариях.

Смежные вопросы