关于while while循环

时间:2013-03-24 03:48:58

标签: python loops while-loop iteration

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。需要迭代#hich是当Pd-P1 P2和P3之和应小于1时。

当我通过输入i = 8.5和pd = 2500来运行它时,结果是800.619834711981.973434535,946.634615385。这意味着#The thing永远不会迭代,因为这三者的总和不是2500.

有人可以告诉我为什么不进行迭代以及我的while循环有什么问题。

1 个答案:

答案 0 :(得分:1)

第一次迭代时,e的值为-229.22788463,因此您将摆脱循环。

来自Python control flow文档:

  

{C}中的break语句突破了最小的forwhile循环。

根据您的问题:

  

需要迭代#hich是当Pd-P1 P2和P3的总和应小于1时。

我想你想通过以下方式计算e:

e = Pd - (P1 + P2 + P3)

但目前尚不清楚。也许你只想要你的if语句:

if (P1 + P2 + P3) < Pd: