0

whileループで私がやろうとしているのは、10の整数で支払いを繰り返すことです。そのため、その整数(g)がCBalance <= 012か月以内に取得できなかった場合、gを除いてすべての変数がリセットされます。 1で。

Balance = float(raw_input('Enter Balance '))
Rate = float(raw_input('Enter interest rate '))
monthlyI = Rate/12
month = 0
g = 1
Payment = 10
CBalance = Balance
while CBalance > 0:
    Payment = Payment*g
    month += 1
    CBalance = CBalance *(1+ monthlyI)- Payment
    if month > 12:
        month = 0
        g += 1
        Cbalance = Balance
4

2 に答える 2

1

私はあなたの質問が何であるか、そして何が問題を引き起こしているのか、つまり変数名の単純なスペルミスをついに理解したと思います。ifこれを修正するには、whileループ内のに続くステートメントの最後の行を次のように変更します。

        if month > 12:
            month = 0
            g += 1
            Cbalance = Balance

に:

        if month > 12:
            month = 0
            g += 1
            CBalance = Balance  # note corrected spelling of variable name on left

これが、すべての値がリセットされなかった理由を説明しています。あなたがそれを知っていれば、それがあなたの質問にどの変数であるかを明確に述べていれば、それは役に立ちました。とにかく、この種のことは、CapitalizedおよびmixedCase変数名を使用しているときに発生する可能性が高くなります。

多くのプログラマーはその理由でそれらを避けようとします。特にPythonのような言語では、変数を使用する前に変数を宣言する必要はありません。PEP8のスタイルガイドラインの命名規則のセクションを確認することをお勧めします。

于 2013-01-05T21:58:59.953 に答える
0

whileループで私がやろうとしているのは、10の整数で支払いを繰り返すことです。そのため、その整数(g)が12か月以内にCBalance <= 0を取得できなかった場合、gを除くすべての変数がリセットされます。 、1ずつ上がります。

何が起こっているのかと思うと、これを実行するたびに、次のようになります。

Payment = 10 * 1 //First while payment = 10

2回目

Payment = 10 * 1 //payment = 10 again.

その結果:

  CBalance = CBalance * (1 + monthlyI) - 10

ループを終了するために必要な負の値になることは決してありませんか?

あなたがおそらく望む間:

counter = 1;
while CBalance > 0:
   Payment = Payment*counter
   month += 1
   counter += 1
   CBalance = CBalance *(1+ monthlyI)- Payment
   if month > 12:
      month = 0
      counter = 1
      g += 1
      Cbalance = Balance
于 2013-01-05T20:12:54.570 に答える