1

クレジットカードの残高を計算するプログラムをPythonで作成しようとしています。MITのオープンコースウェア「Introduction to Computer Science and Programming」用です。私は問題セット1をやっています。

プログラムは、ユーザーに開始変数 (開始残高、年利、最低月額支払額) を尋ねなければなりません。これが私のコードです。

initialOutstandingBalance= float(raw_input('What is the outstanding balance on your  
card?'))
annualInterestRate=float(raw_input('What is the annual interest rate expressed as a   
decimal?'))
minimumMonthlyPaymentRate=float(raw_input('What is the minimum monthly payment rate on
your card expressed as a decimal?'))

for month in range(1,13):
    print("Month: "+ str(month))
    minimumMonthlyPayment=float(minimumMonthlyPaymentRate*initialOutstandingBalance)
    interestPaid=float((annualInterestRate)/(12*initialOutstandingBalance))
    principalPaid=float(minimumMonthlyPayment-interestPaid)
    newBalance=float(initialOutstandingBalance-principalPaid)
    print("Minimum monthly payment: $"+str(minimumMonthlyPayment))
    print("Principle paid: $"+str(principalPaid))
    print("Remaining Balance: $"+str(newBalance))

残高を適切に更新するにはどうすればよいですか? 各月末に残高を更新する方法がわかりません。これまでのところ、各月は、月々の最低支払額、支払済みの元本、および残高に対して同じ値を返します。

4

2 に答える 2

0

変数をループ外に保持したいnewBalance場合、そうしないと、反復ごとに再割り当てされます。また、金利を残高の 12 倍で割るのではなく、12 で割り、その商に残高を掛けます。最後に、上記のように、すべてのfloats は必要ありません。

これはうまくいくはずです:

newBalance = initialOutstandingBalance

for month in range(1,13):
    print("Month: " + str(month))

    minimumMonthlyPayment = minimumMonthlyPaymentRate * newBalance
    interestPaid = annualInterestRate / 12 * newBalance
    principalPaid = minimumMonthlyPayment - interestPaid
    newBalance -= principalPaid

    print("Minimum monthly payment: $" + str(minimumMonthlyPayment))
    print("Principle paid: $" +  str(principalPaid))
    print("Remaining Balance: $" + str(newBalance))
于 2013-10-16T22:20:18.103 に答える
0

ループ全体で同じinitialOutstandingBalance変数を使用しており、決して変更していません。代わりに、現在の残高を追跡する必要があります。これは、ループ開始時の初期未払い残高と同じですが、ループが実行されるにつれて変化します。

また、電話をかけ続ける必要もありませんfloat

current_balance = initialOutstandingBalance
for month in range(1,13):
    print("Month: "+ str(month))
    minimumMonthlyPayment = minimumMonthlyPaymentRate * current_balance
    # this calculation is almost certainly wrong, but is preserved from your starting code
    interestPaid = annualInterestRate / (12*current_balance)
    principalPaid = minimumMonthlyPayment - interestPaid
    current_balance = current_balance - principalPaid
    print("Minimum monthly payment: $"+str(minimumMonthlyPayment))
    print("Principle paid: $"+str(principalPaid))
    print("Remaining Balance: $"+str(current_balance))
于 2013-10-16T22:05:31.153 に答える