2017-02-11 107 views
0

我试图用pyplot绘制在Python线图时,“浮动”对象不是可调用的,但我得到一个错误,TypeError: 'float' object is not callable此行的代码:类型错误:试图绘制功能

ycoord = [math.pow(p(1-p),(i-1)) for i in range(1,51)] 

我基本上有一个函数p(1-p)^(i-1),我需要绘制一个线图。我有一个坐标1-51的数组。我需要使用该函数获取相应的y坐标。 我也试过:p(1-p)**(i-1),但那也没有奏效。

这是我的全码:

def test(): 
    p = 0.2 
    plt.figure(1) 
    #create x coordinates [1-51] 
    xcoord = [i for i in range(1,51)] 
    #create y coordinates from formula 
    ycoord = [math.pow(p(1-p),(i-1)) for i in range(1,51)] 
    plt.plot(xcoord,ycoord) 
    plt.draw() 
    plt.show() 

test() 
+0

你有'P(1-P)''那里是p'一个'float',你想做什么? –

+0

在Python(以及我所知道的大多数其他计算机语言)中,'p(1-p)'并不意味着'p'次'(1-p)'。你必须明确写出乘法运算符。即:'p *(1-p)'。 _不像许多其他语言,Python中的指数运算符是写成'**'而不是'^'。 – martineau

回答

1

在Python中乘法的语法是不一样的,你可以用于当写数学方程式,你不能忽略'*'符号。

p (1-p) 

应该是:

p * (1-p) 
1

该错误是自解释的,

ycoord = [math.pow(p(1-p),(i-1)) for i in range(1,51)] 

在此块中,p是一个浮点数,而不是一个方法名称。如果你有一个你想从这里调用的函数p,那么将这个变量p重命名为其他东西,反之亦然。

此外,如果你意(px(1-p))^(i-1) [P倍(1-p)提供给功率I-1],你应该做pow(p*(1-p), (i-1))