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循环有什么问题。
答案 0 :(得分:1)
第一次迭代时,e的值为-229.22788463,因此您将摆脱循环。
来自Python control flow文档:
{C}中的
break
语句突破了最小的for
或while
循环。
根据您的问题:
需要迭代#hich是当Pd-P1 P2和P3的总和应小于1时。
我想你想通过以下方式计算e:
e = Pd - (P1 + P2 + P3)
但目前尚不清楚。也许你只想要你的if语句:
if (P1 + P2 + P3) < Pd: