以下私はクレジットカードの残高を計算するコードを持っていますが、balance
に極値(たとえばbalance=9999999999
など)がある場合は機能しません。無限ループを介してコードをスローします。私はこの欠陥を修正する方法についていくつかの理論を持っていますが、それらの方法を進める方法はわかりません。ここに私のコードです:コードに無限ループが発生するのはなぜですか?
balance = 9999999999
annualInterestRate = 0.2
monthlyPayment = 0
monthlyInterestRate = annualInterestRate /12
newbalance = balance
month = 0
while newbalance > 0:
monthlyPayment += .1
newbalance = balance
for month in range(1,13):
newbalance -= monthlyPayment
newbalance += monthlyInterestRate * newbalance
month += 1
print("Lowest Payment:" + str(round(monthlyPayment,2)))
私の理論は、ニューバランスは、それが発生しないように、私はこのwhile
ループを変更するにはどうすればよい0
より常に大きいので while newbalance > 0
は、無限ループを引き起こしているということです無限に実行する私のコードですか?
ところで: 中程度の数字では、プログラムは長い間実行され、最終的に答えが得られます。数字が大きいほど、プログラムは継続しています。
値が何であるかを推測するのではなく、 'while'ループの中に' print(newbalance) 'を追加しないのはなぜですか? – CoryKramer
あなたは値を印刷しましたか?それは多くの助けになるだろう! –
@MooingRawr:私はそれが慎重だと思う。プログラムは、毎月の毎月の支払いを増やさずに、12ヶ月で完全なバランスを支払うための最低限の月額支払いを計算しているようです。 (毎月毎月の支払いを増やしていたのであれば、この方法で支払うことは決してありません) – user2357112