0

このプログラムで助けが必要です。10 年以上の期間 (最初の年を含む) の利息を計算する方法を理解するのに助けが必要です。これは私が自分で得た限りです。この問題についての洞察をいただければ幸いです。

ありがとう。*「print()」は、プログラムがきれいに見えるように間隔を空けるためのものです。

p= int(input(" Intial Amount? "))
print()
r= float(input(" Rate? (Decimal) "))
print()
n= int(input(" Number Of Times Compunded? (Yearly) "))
print()
t= float(input(" Number Of Years? "))
A= p*(1+r/n)**(n*t)
print()
print( " Interest At Final Year","$",format(A, ',.2f'))
print()
for i in range (10):
    print(format(i+1, '3')," Year","Interest","$",format(A,',.2f'))
4

2 に答える 2

3

ループの本体では、どの変数の値も更新していません。反復ごとに A を更新するか、中間結果を他の変数に保存する必要があります。例として、次を参照してください。

def compound_interest(r, n, initial):
    current_value = initial
    for i in range(n):
        current_value *= (1 + r)
        print(current_value)

current_value 変数を使用して、ループの中間結果を保存します。すべての反復で単に initial * (1 + r) を実行した場合、initial の値は決して変化しません。使用し続ける場合は、計算結果を保存する必要があります。

于 2012-11-27T01:58:03.307 に答える
0

プログラムの最後に 1 ~ 10 を数えますが、最初の計算と同じ量になります。

はい、それは、そのループで発生するのはprint呼び出しだけだからです。Aループに入る前に一度にすべてを計算し、同じものAを何度も使用しています。

「n」と「p」が変化している間に、合計する新しい値を追加するのに助けが必要です。

まあ、あなたは変わっていませんnまたはp、そして私はあなたがする必要はないと思います. ただし、何かを変更する必要があります。ループを介して毎回異なる値を出力したい場合は、前年の値に基づいてA来年の値を再計算するか、その他の方法で正しい値を決定する必要があります。AA

例えば:

for year in range (10):
    jan1balance = p
    for period in range(n):
        p = p * (1 + r)
    print(format(year+1, '3')," Year","Interest","$",format(p - jan1balance,',.2f'))

または:

for year in range (10):
    yearlyinterest = 0
    for period in range(n):
        periodinterest = p * r
        yearlyinterest += periodinterest
        p += periodinterest
    print(format(year+1, '3')," Year","Interest","$",format(yearlyinterest,',.2f'))
于 2012-11-27T02:24:56.320 に答える