分段函数不起作用

Piecewise function not working

我定义了一个这样的分段函数:

def C1(d,x):
    if ((x<d/2) and (x>-d/2)):
        return (1/d)
    else:
        return 0

但它总是return我0

In [23]: C1(1000,1)

Out[23]: 0

尝试from __future__ import division

这是 PEP 238 的 link 解释了这一点。

https://www.python.org/dev/peps/pep-0238/

在Python中,除号运算符(/)执行整数除法,即如果分子和分母均为整数,则小数点将被截断。所以当你做 (1/d) 时,1 和 d 都是整数,所以它确实是整数,例如 1/1000 是 0.001 但在整数除法中你丢失了小数所以你得到的是 0。要解决这个问题,请将所有您定义的数字通过添加 .0 浮动。例如,(x < d/2.0) 和 (x > -d/2.0) 和 (1.0/d) 这应该会给您正确的结果。