2016-04-03 18 views
-1

初めてのポスターと初心者はこちら。私は毎月クレジットカード会社が要求する最低限の毎月の支払いのみを支払う場合、1年後にクレジットカードの残高を決定するためにwhileループを実行しようとしています。問題は、ループを反復処理するのと同じ答えである:whileループ反復同じ回答

bal = float(raw_input("Enter your outstanding balance: ")) 
ann = float(raw_input("Enter your annual interest rate: ")) 
min = float(raw_input("Enter the minimum monthly payment rate ")) 

month = 1 
#min_monthly_paym=nt = min * bal 
#interest paid = ann/12.0 * bal 
#principal paid = min_monthly_payment(MMP) -interest paid(IP) 
#remaining balance = bal - principal paid (PP) 

mmp = min * bal 
ip = ann/12.0 * bal 
pp = mmp - ip 
rb = bal - pp 

while month <= 12: 
    print "Month:", month 
    print "Minimum monthly payment:", mmp 
    print "Principle paid:", pp 
    print "Remaining balance:", rb 
    month = month + 1 

だから、それはすべての月を通過しますが、唯一のこれらの計算の初期値を出力します。 print文の後にmmp/ip/pp/rbを設定しようとしましたが、同じことが起こりました。私は別の変数を作成する必要があると思うが、何がわからないのか。あなたが何かやっている

+1

あなたのインデントをしてください修正します。 – timgeb

+5

また、whileループの外で計算された値が、決して再び更新されないwhileループで魔法のように変化すると仮定しているのはなぜですか? – timgeb

+0

あなたの値は、** 'while'に更新されることはありませんので、すべての12ヶ月あなたはまだあなたが想定している**私は多分推測している –

答えて

4

:上記の例では

a = 1 
ten_times_a = a * 10 

for n in range(10): 
    print ten_times_a  # Output: 10, 10, 10, 10, ... 

を、ten_times_aを実行の瞬間にを計算しています。

ten_times_aaとして変更することはありません。


あなたが再計算forループの体内に入れなければなりません。

for a in range(10): 
    ten_times_a = a * 10 
    print ten_times_a  # Output: 0, 10, 20, 30, 40, ... 
+0

このシナリオではforループは意味があります私が実際に範囲(12ヶ月)を持っているとすれば?私は当初は同じことを考えましたが、おそらくこれはwhileループで実行される可能性があります。 – Pbculley

+0

@Pbculley 'for'ループは、処理するものの一覧があるとき、または数えたいときに使用します。 「while」は、何回何をやらなければならないか分からないときのためのものです。あなたはまだ完了しているかどうかをチェックしなければなりません。 –

+0

これにはさまざまな方法があります。 whileループでしかできないのだろうかと思っています。 – Pbculley

関連する問題