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未満である必要がある場合です。

i=8.5およびpd=2500と入力して実行すると、結果は800.619834711981.973434535、946.634615385になります。これは、この3つの合計が2500ではないため、#事が繰り返されないことを意味します。

誰かが、なぜ反復しないのか、そして私のwhiletrueループの何が悪いのかを教えてもらえますか。

4

1 に答える 1

1

eの値は最初の反復で-229.22788463であるため、ループから抜け出します。

Python制御フローのドキュメントから:

このbreakステートメントは、Cの場合と同様に、最小の囲みforまたはwhileループから抜け出します。

あなたの質問に基づいて:

反復が必要です。#これは、Pd(P1、P2とP3の合計)が1未満である必要がある場合です。

私はあなたがeを計算したいと思います:

e = Pd - (P1 + P2 + P3)

しかし、それは明確ではありません。たぶん、あなたはあなたのifステートメントを次のようにしたいと思うでしょう:

if (P1 + P2 + P3) < Pd:
于 2013-03-24T03:57:06.777 に答える