2016-04-20 86 views
-6

如何在python代碼中獲得此公式。它應該等於0.343,但是當我輸入它時,我總是得到其他東西。當我在紙上計算它時,我能夠得到它,但在Excel/Python中我無法。將代碼寫入Python代碼

Equation

我曾嘗試:

((.310*.290)/.260)/(.310*.290)/(.260+((1-.310)*(1-.290)/1-.260)) 

這給了我7.85

+0

我不認爲有一種方法來挽救這個問題這不會因爲關閉而結束。然而,下面是帶括號的方程:'0.31 * 0.29/0.26 /(0.31 * 0.29/0.26 +(1-0.31)*(1-0.29)/(1-0.26))' –

回答

1

您需要組分隔條下的兩個括號中的表達式:

>>> (
...  (.310 * .290)/.260 
... /
...  (
...   (.310 * .290)/.260 
...   + 
...   ((1 - .310) * (1 - .290)/(1 - .260)) 
... ) 
...) 
0.3430943785456421 

這確保了在條的下面添加兩個部分之前除以上面的表達式結果。

你沒有這樣做,在你的企圖,所以你基本上得到這個代替:

(
    ((.310 * .290)/.260) 
    /
    (.310 * .290) 
    /
    (
     .260 
     + 
     (
      (1 - .310) * (1 - .290)/1 
      - 
      .260 
     ) 
    ) 
) 

我根據優先級規則我都和你嘗試拆分出來。注意區別?

(.310 * .290)的結果應該首先被分成.260,並且將其餘的表達式加到它的總和之下;您的版本首先將分欄結果從上面劃分出來,然後結果除以.260 + ...的結果。這是不一樣的表達。

甚至在原始表達式中的一些括號是多餘的。乘除加減先,所以我們可以刪除周圍乘法和除法括號:在一行

(
    .310 * .290/.260 
    /
    (.310 * .290/.260 + (1 - .310) * (1 - .290)/(1 - .260)) 
) 

或全部:

>>> .310 * .290/.260/(.310 * .290/.260 + (1 - .310) * (1 - .290)/(1 - .260)) 
0.3430943785456421 
0
(((.310 * .290)/.260)/(((.310 * .290)/.260) + ((1-.310) * (1 - .290)/(1 - .260))))