函数返回值x而不是y

时间:2016-10-09 10:50:14

标签: python function

f(x)表示三角波形的函数。在其中输入值x,它返回相关的y值。但是我的函数每次都返回x而不是y。例如,f(1)应该给2 / pi而不是1。

def f(x):

    y=x

    if x in arange(-math.pi,-math.pi/2):
        y=(-2/math.pi)*x-2


    elif x in arange(-math.pi/2,math.pi/2):
        y=(2/math.pi)*x


    elif x in arange(math.pi/2,math.pi):
        y=(-2/math.pi)*x+2

    return y

2 个答案:

答案 0 :(得分:1)

numpy.arange返回一组非连续数字。仅当左侧操作数属于这些数字时,针对它的in操作才会返回True

您最好使用<= / <对来避免此类问题。除了正确之外,它还可以节省创建阵列的成本。

def f(x):
    y = x

    if -math.pi <= x < -math.pi/2:
        y = (-2/math.pi)*x-2
    elif -math.pi/2 <= x < math.pi/2:
        y = (2/math.pi)*x
    elif math.pi/2 <= x < math.pi:
        y = (-2/math.pi)*x+2

    return y

答案 1 :(得分:0)

&#39; in&#39; keyword仅检查搜索到的元素是否位于列表中。在这里,您的列表仅包含步骤1中的值。也许x的值不是一个完整的步骤。因此,纠正的功能将是:

def f(x):

    y=x

    if x>-math.pi and x<-math.pi/2:
        y=(-2/math.pi)*x-2


    elif x>-math.pi/2 and x<math.pi/2:
        y=(2/math.pi)*x


    elif x>math.pi/2 and x<math.pi:
        y=(-2/math.pi)*x+2

    return y