-2

クレジットカード会社が毎月必要とする最低月額の支払いのみを行う場合、1年後にクレジットカードの残高を計算するプログラムを作成します。

1年後に残された最終残高を印刷するプログラムを書こうとしています。

balance = 4213

annualInterestRate = 0.2

monthlyPaymentRate = 0.04

month = 1

new_balance = (balance - (balance*monthlyPaymentRate))*(1+(annualInterestRate/12))


while month < 13:
    print "Month: " + str(month)
    print "Minimum monthly payment: " + str(round(minimum_monthly_payment, 2))
    print "Remaining balance: " + str(round(new_balance, 2))
    month += 1

私の出力はこれを示しています:

Month: 1
Minimum monthly payment: 168.52
Remaining balance: 4111.89

Month: 2
Minimum monthly payment: 168.52
Remaining balance: 4111.89

Month: 3
Minimum monthly payment: 168.52
Remaining balance: 4111.89

しかし、私はこのようなものを取得する必要があります:

Month: 1
Minimum monthly payment: 168.52
Remaining balance: 4111.89

Month: 2
Minimum monthly payment: 164.48
Remaining balance: 4013.2

Month: 3
Minimum monthly payment: 160.53
Remaining balance: 3916.8
4

3 に答える 3

0

あなたは同じ行を3回やっています:new_balance = (balance - (balance*monthlyPaymentRate))*(1+(annualInterestRate/12))

ここには、whileループごとに更新されるvariabelはありません。balance毎回低い数値を取得するように更新する必要があります。

于 2012-10-08T14:33:00.527 に答える
0

毎月残高を更新するのを忘れているため、値が更新されていないようです。balance次のように、ループごとに1回変数を更新してみてください。

while month < 13:
    print "Month: " + str(month)
    print "Minimum monthly payment: " + str(round(minimum_monthly_payment, 2))
    print "Remaining balance: " + str(round(balance, 2))
    balance = (balance - (balance*monthlyPaymentRate))*(1+(annualInterestRate/12))
    month += 1

また、コードをはるかに読みやすくする(そしてはるかにPythonicにする)ために、独自のwhileループを使用するのではなく、Pythonの組み込みリスト構造を使用できます。

for month in range(1, 13):
    print "Month: %d" % month
    print "Minimum monthly payment: %d" % round(minimum_monthly_payment, 2)
    print "Remaining balance: %d" % round(balance, 2)
    balance = (balance - (balance * monthlyPaymentRate)) * (1 + (annualInterestRate / 12)
于 2012-10-08T14:34:04.737 に答える
0

変数は必要ありません。変数new_balanceを変更するだけですbalance

while month < 13:
    print "Month: " + str(month)
    print "Minimum monthly payment: " + str(round(minimum_monthly_payment, 2))
    balance = (balance - (balance*monthlyPaymentRate))*(1+(annualInterestRate/12))
    print "Remaining balance: " + str(round(balance, 2))
    month += 1

出力:

Month: 1
Minimum monthly payment: 168.52
Remaining balance: 4111.89
Month: 2
Minimum monthly payment: 168.52
Remaining balance: 4013.2
Month: 3
Minimum monthly payment: 168.52
Remaining balance: 3916.89
Month: 4
Minimum monthly payment: 168.52
Remaining balance: 3822.88
Month: 5
Minimum monthly payment: 168.52
Remaining balance: 3731.13
Month: 6
Minimum monthly payment: 168.52
Remaining balance: 3641.58
Month: 7
Minimum monthly payment: 168.52
Remaining balance: 3554.19
Month: 8
Minimum monthly payment: 168.52
Remaining balance: 3468.89
Month: 9
Minimum monthly payment: 168.52
Remaining balance: 3385.63
Month: 10
Minimum monthly payment: 168.52
Remaining balance: 3304.38
Month: 11
Minimum monthly payment: 168.52
Remaining balance: 3225.07
Month: 12
Minimum monthly payment: 168.52
Remaining balance: 3147.67
于 2012-10-08T14:38:13.210 に答える