0

私はPython /プログラミングの初心者です。私は MIT オープン コースウェアの問題を割り当てられました。

クレジット カードの残高を 12 か月以内に完済するための、毎月の最低固定額を計算するプログラムを作成してください。

raw_input()次の浮動小数点数として取得します。

1) クレジットカードの未払い残高 2) 年利率の小数

固定された最低支払い額、借金を完済するのにかかる月数 (最大で 12、場合によっては 12 未満)、および残高 (負の数である可能性が高い) を出力します。

月初(当月分のお支払い前)の残高をもとに、月々の複利計算で利息を計算するものとします。毎月の支払いは $10 の倍数である必要があり、すべての月で同じです。この支払いスキームを使用すると、残高がマイナスになる可能性があることに注意してください。

答えは:

balance = float(raw_input('Enter the outstanding balance on your credit card: '))
interest = float(raw_input('Enter the annual credit card interest rate as a decimal: '))
minPay = 10
newBalance = balance

while balance > 0:
    for month in range(1,13):
        newBalance = newBalance*(1+(interest/12))-minPay
        if newBalance <=0:
            break
    if newBalance <= 0:
        balance = newBalance
    else:
        newBalance = balance
        minPay = minPay+10


print 'RESULT'
print 'Monthly payment to pay off debt in 1 year: ' + str(minPay)
print 'Number of months needed: ' + str(month)
print 'Balance: ' + str(round(balance,2))

私の質問:

1) 未処理の入力残高として 1200 を使用し、金利として 0.18 を使用します。minPay = 120、month = 11、balance = - 10.05 に到達する方法を誰かが言葉で説明できますか?

newBalance = newBalance* (1 +(interest/12)) - minPay.

残高として 1200 を使用すると、newBalance = 1200 * (1 +(.18/12)) - 10 = 1218 - 10 = 1208 になります。

2) newBalance は <= 0 ではないため、プログラムは else ステートメントに進みます。else ステートメントの newBalance = balance 部分で何が起こっているのか。newBalance を 1200 に戻しますか (元の残高入力)。

この問題を理解するのに苦労しています。どんな洞察も高く評価されます。

4

3 に答える 3

1

Python インタープリターと同じようにコードの各行を確認し、プログラムが期待どおりに動作する理由を確認することを強くお勧めします。

それが面倒な場合は、ループ自体に print ステートメントを配置して、各ステップでの各変数の値を確認してください。これは、コードが何をしているのかを理解するのに常に役立ちます。

ご質問については、

  1. はい、ニューバランスにはあなたが期待する価値があります

  2. はい、else 部分でバランスに再割り当てされます。これを変更したい場合があります。

コードが実際に何をしようとしているのかわからないので、正しいアプローチが何であるかについてあなたを助けることはできませんが、print ステートメントを追加しようとすると、役立つはずです。幸運を!

于 2012-08-19T22:40:50.840 に答える
0

newBalance = balanceelse ステートメントの部分で何が起こっていますか? newBalance を 1200 に戻しますか (元の残高入力)。

はい、それだけです。その後、minPayが増加し、ループが再び開始されます。

minPay反復ごとに増加すると、newBalance最終的に負になります。

于 2012-08-19T22:27:41.987 に答える