【问题标题】:about the while true loop关于 while true 循环
【发布时间】:2013-03-24 03:48:57
【问题描述】:
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 时。

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

谁能告诉我为什么不迭代以及我的 while true 循环有什么问题。

【问题讨论】:

  • 这是干什么用的:i=i + 0.1(i) -- 0.1 是一个浮点数,你不能将它作为函数调用

标签: python loops while-loop iteration


【解决方案1】:

第一次迭代时 e 的值是 -229.22788463,所以你要跳出循环。

来自 Python control flow 文档:

break 语句,就像在 C 中一样,跳出最小的封闭 forwhile 循环。

根据您的问题:

需要一个迭代#这是Pd-P1 P2和P3之和应该小于1的时候。

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

e = Pd - (P1 + P2 + P3)

虽然不清楚。也许你只是希望你的 if 语句是:

if (P1 + P2 + P3) < Pd:

【讨论】:

  • 你好,它不起作用。答案仍然是 800.619834711, 981.973434535,946.634615385。显然,将它们加在一起不是 2500
猜你喜欢
  • 2013-12-20
  • 2017-07-14
  • 1970-01-01
  • 2022-11-23
  • 2011-10-14
  • 1970-01-01
  • 2016-12-03
  • 2014-07-30
  • 1970-01-01
相关资源
最近更新 更多