Py学习  »  Eternal  »  全部回复
回复总数  1
4 年前
回复了 Eternal 创建的主题 » 如何在python函数中添加f(x)作为参数?

问题是字符串实际上没有被计算。它只是被转换成float,所以错误提示您正在做的是将“0**2”转换成float,这是不可能的,您可以做的是使用eval函数来计算任何给定的字符串,然后比较结果。

你只需要做这样一个小小的改变:

result=eval(function.replace("x",str(x)))

这还不是最好的方法,您应该在那里使用生成器:

def maxf(function,interval):
  maxresult = 0
  for x in range(interval[0]-1,interval[1]+1):
    yield eval(function.replace("x",str(x))), x


print(max(maxf("x**2", [1, 3])))

a_list = [1,3]

max_item = max(a_list, key=lambda x: eval("x**2"))

print(eval("x**2".replace("x", str(max_item))), max_item)