下面我有一段代碼可以計算信用卡餘額,但當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 newbalance > 0
導致無限循環,因爲NEWBALANCE比0
我怎樣才能改變這種while
循環,這樣也不會引起較大的始終我的代碼無限運行?
順便說一句: 中等數字,程序運行很長時間,最後給出了答案。對於更大的數字,該計劃只是繼續前進。
爲什麼不在''while'循環中添加'print(newbalance)'而不是猜測值是多少? – CoryKramer
您是否打印過這些值?它會幫助很多! –
@MooingRawr:我認爲這是故意的;該計劃似乎是計算最低的每月付款以支付12個月的全部餘額,而不是每年增加每月付款。 (如果是每年增加每月付款,你永遠不會用這種方式付錢。) – user2357112