2017-02-11 103 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))