2
balance = 4213
annualInterestRate = 0.2
monthlyPaymentRate =0.04
monthInterestRate = annualInterestRate / 12
monthlyPayment = (monthlyPaymentRate*balance)
newBalance= (balance-monthlyPayment) * (1 + monthInterestRate)
month = 0
while month < 12:
    month += 1
    newBalance=(balance-monthlyPayment)*(1 + monthInterestRate)
    balance = newBalance
    monthlyPayment = (monthlyPaymentRate*newBalance)

    print ("Month: " + str(month))
    print ("Minimum monthly payment: " + str(round(monthlyPayment,2)))
    print ("Remaining balance: " + str(round(newBalance, 2)))

だから、私は上記のコードを持っていて、それが以下の出力を表示するようにしようとしています:

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.89
Month: 4
Minimum monthly payment: 156.68
Remaining balance: 3822.88
Month: 5
Minimum monthly payment: 152.92
Remaining balance: 3731.13
Month: 6
Minimum monthly payment: 149.25
Remaining balance: 3641.58
Month: 7
Minimum monthly payment: 145.66
Remaining balance: 3554.19
Month: 8
Minimum monthly payment: 142.17
Remaining balance: 3468.89
Month: 9
Minimum monthly payment: 138.76
Remaining balance: 3385.63
Month: 10
Minimum monthly payment: 135.43
Remaining balance: 3304.38
Month: 11
Minimum monthly payment: 132.18
Remaining balance: 3225.07
Month: 12
Minimum monthly payment: 129.0
Remaining balance: 3147.67
Total paid: 1775.55
Remaining balance: 3147.67

そして、何らかの理由で、上記の代わりに以下の結果が得られ続けます...誰かが私が間違っていることを指摘してもらえますか?どうもありがとうございます!

Month: 1
Minimum monthly payment: 164.48
Remaining balance: 4111.89
Month: 2
Minimum monthly payment: 160.53
Remaining balance: 4013.2
Month: 3
Minimum monthly payment: 156.68
Remaining balance: 3916.89
Month: 4
Minimum monthly payment: 152.92
Remaining balance: 3822.88
Month: 5
Minimum monthly payment: 149.25
Remaining balance: 3731.13
Month: 6
Minimum monthly payment: 145.66
Remaining balance: 3641.58
Month: 7
Minimum monthly payment: 142.17
Remaining balance: 3554.19
Month: 8
Minimum monthly payment: 138.76
Remaining balance: 3468.89
Month: 9
Minimum monthly payment: 135.43
Remaining balance: 3385.63
Month: 10
Minimum monthly payment: 132.18
Remaining balance: 3304.38
Month: 11
Minimum monthly payment: 129.0
Remaining balance: 3225.07
Month: 12
Minimum monthly payment: 125.91
Remaining balance: 3147.67
4

4 に答える 4

2

アルゴリズムの問​​題は、毎月の支払いが新しい残高に基づいて計算されることでした。

Python コードに関するいくつかのポイント:

1- Python でコーディングするときは、キャメルケースの代わりに下線を使用します

2- 印刷時に str() の代わりに文字列フォーマットを使用する

3- for は while here よりも優れた選択です

4- 不要な括弧を使いすぎる必要はありません

balance = 4213
annual_interest_rate = 0.2
monthly_payment_rate =0.04
monthly_interest_rate = annual_interest_rate / 12
monthly_payment = monthly_payment_rate * balance
new_balance= (balance - monthly_payment) * (1 + monthly_interest_rate)

for month in range(1, 13):
    monthly_payment = monthly_payment_rate * balance
    balance = (balance - monthly_payment) * (1 + monthly_interest_rate)

    print('Month: %d \n Minimum monthly payment: %g \n Remaining balance: %g'\
          % (month, round(monthly_payment, 2), round(balance,2)))
于 2013-02-23T05:20:31.707 に答える
1

毎月のお支払いは1ヶ月オフです。

計算では、月々の支払い(monthlyPayment)は、新しい残高()に基づいて、newBalanceまたは支払いを行った後に計算されます。

于 2013-02-23T06:42:04.153 に答える
1

while ループ内のステートメントの順序を考慮してください。

于 2013-02-23T04:43:19.810 に答える