我需要创建一个返回指数函数的函数,但是指数函数只接受正数,我尝试使用lambda (是我的限制的一部分),我尝试这样做:
def create(v):
return (lambda x: (v*e**-(v*x)) if x>=0)但它总是提示语法错误:
File "<stdin>", line 8
return (lambda x : (v*e**-(v*x)) if x>=0)
^
SyntaxError: invalid syntax我怎么能让它只对正数起作用呢?
发布于 2017-05-03 08:37:32
您的代码很少有问题:
else子句,在使用三元操作符时它是必需的。如果有人输入负数,Python解释器需要知道该做什么。lambda函数的最外层参数。if应该在lambda身体的括号中更深一层。现在根据你的评论:
我只希望它在所提供的值为负值时不返回。
最后的结果应该是这样的:
def create(v):
return lambda x: (v*e**-(v*x) if x >= 0 else None)事实上,您也不需要在lambda的身体周围加上括号:
def create(v):
return lambda x: v*e**-(v*x) if x >= 0 else None尽管在这一点上,首先运行哪个操作可能会变得复杂,所以我强烈建议保留括号。
发布于 2017-05-03 08:33:11
三元表达式总是需要它的else部分,否则您还没有指定如果数字为负值应该发生什么(虽然您希望它不会发生,但可能仍然是这样)。
例如:
>>> import math
>>> r = lambda x: math.sqrt(x) if x >= 0 else x
>>> r(9)
3.0
>>> r(-9)
-9您所遇到的语法错误是因为缺少该else。
https://stackoverflow.com/questions/43754869
复制相似问题