Python 用于scipy计算的输入函数

Python 用于scipy计算的输入函数,python,python-3.x,scipy,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]*

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

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:-:'NoneType'和'NoneType'不支持的操作数类型

我花了很多时间使它工作,但不能解决这个问题。我做错了什么?

返回
None
。使用。使用
eval

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

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

嗯,eval有效,非常感谢!但我还有另一个错误:
未能将_slsqp.slsqp的第8个参数g转换为C/Fortran数组
。这似乎是scipy模块的错误,它没有解决方案。从不同的角度来看,函数没有任何变化。所以scipy没有用?有可能
(“+input()+”)
不会返回标量(slsqp需要)。请尝试使用
返回eval(input())