2016-03-12 3 views
0

У меня возникла проблема, которая у меня была целая вечность, не найдя решения.Как вычислить математический термин, упакованный в строку (python)

Код это:

Df = range(100) 
    function = '3*x+4' 
    for i in Df: 
     listoffunction = list(function) #Will return ['3', '*', ...] 
     for obj in listoffunction: 
      if obj == 'x' : 
       obj = i 
     resultfori = '' 
     for part in listoffunction: 
      resultfori.join(part) #until here everything is fine. 
            #resultfori is the following: '3*i+4' 
            #with i the number of Df 

Вот моя проблема: Как я могу вычислить этот термин? Я пробовал его с помощью команды exec, но он всегда возвращает None. Зачем? Я хочу это, например, если мне 3, чтобы вернуться 13. Можете ли вы мне помочь?

Большое спасибо!

+1

Почему 12? '3 * 3 + 4' можно было бы разумно оценить до 13 или 21, но я не вижу 12 из этого. – zondo

+0

Вы слышали о SymPy? И вы можете попробовать 'eval' вместо' exec' –

+0

Связано: «' exec' игнорирует возвращаемое значение и всегда возвращает 'None' 'http://stackoverflow.com/a/29456463/2308683. –

ответ

0

попробовать что-то вроде этого:

x = input() 
s = '3*x + 4' 
print eval(s) 
+0

Мне пришлось немного адаптировать код, но система за кодом работала отлично! спасибо! –

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