用于scipy计算的输入函数

时间:2015-12-17 07:38:46

标签: python python-3.x scipy

我需要有关此代码的帮助:

import numpy
import math
from scipy.optimize import fmin_slsqp

def f(x, sign=-1.0):   
    tmp = exec('(' + str(input()) + ')')
    return tmp

res = fmin_slsqp(f, [5, 5], iter = 10000)
print(res)

我正在尝试最小化用户输入的功能。功能示例:20*x[0]**0.3*x[1]**0.4 - 2*x[0] - 3*x[1]。但出了点问题,我得到TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType' 我花了很多时间才能使它工作,但无法解决这个问题。我做错了什么?

1 个答案:

答案 0 :(得分:0)

exec返回None。使用eval可以。使用eval

input返回一个字符串;您不需要将其转换为字符串:

def f(x, sign=-1.0):
    return eval('(' + input() + ')')