2013-03-24 105 views
0
i = float (raw_input("Enter i")) 
Pd = int (raw_input("Enter Pd")) 

while True: 
    P1= (i-6.95)/(2*9.68*0.0001) 
    P2= (i-7.051)/(2*7.378*0.0001) 
    P3= (i-6.531)/(2*1.04*0.001) 
    e= Pd-P1-P2-P3 

    if e<=1 : 
     F1=9.68*0.0001*P1*P1 + 6.95*P1 + 749.55 
     F2=7.738*0.0001*P2*P2 + 7.051*P2 + 1285 
     F3=1.04*0.001*P3*P3 + 6.531*P3 + 1531 
     F= F1+F2+F3 
     print 'Total cost F is {0}\n'.format(F) 
     print P1 
     print P2 
     print P3 
     break 
    else :   
     i=i + 0.1(i) 

我寫了一個簡單的while循環來計算電源需求和發電。引入電力需求Pd#和增量成本。我可以計算每個發電機輸出P1 P2和P3。有一個迭代需要#這是什麼時候Pd- P1 P2和P3的和應該小於1。關於while循環

當我通過輸入i = 8.5和pd = 2500運行它時,結果是800.619834711981.973434535,946.634615385。這意味着#這件事從來沒有迭代,因爲這三者的總和不是2500.

有人可以告訴我爲什麼不迭代,我的真正的循環有什麼問題。

+0

這是什麼了:'I = I + 0.1(I)' - 0.1是一個浮點數,你不能把它作爲一個功能 – lenik 2013-03-24 04:03:35

回答

1

在第一次迭代中e的值是-229.22788463,所以你正在擺脫循環。

從Python control flow文檔:

break語句,像C,爆發最小的封閉forwhile循環。

根據你的問題:

有一個迭代所需#which是當鈀的P1 P2和P3的總和應小於一個。

我想你想通過計算E:

e = Pd - (P1 + P2 + P3) 

目前尚不清楚,但。也許你只是想你的if語句是:

if (P1 + P2 + P3) < Pd: 
+0

你好,這不是」工作。答案仍然是800.619834711, 981.973434535,946.634615385。顯然,將它們加在一起並不是2500 – 2013-03-24 10:29:53

+0

好。好的解決它alt .. thx – 2013-03-24 10:31:21