我遇到了一個來自在線課程(Python入門)的問題。基本上,我們被告知要使用二分法搜索來查找每月最低的固定支付額,以在給定餘額和年利率時在一年內清除債務(四捨五入到最接近的0.01美元)。我的解決方案在上傳到他們的在線平地機時,僅給出了此錯誤:Python中的二進制搜索無限循環?
「運行您的解決方案時出現問題。 我們無法運行您的解決方案。
我可能在一個無限循環?如果是這樣,我不太明白如何。原始代碼在下面發佈。謝謝大家花時間閱讀本文!
MonthlyInterestRate = annualInterestRate/12
month = 1
LB = balance/12
UB = balance*(2.7/12)
check = balance
while abs(balance) > 10:
payment = (LB + UB)/2
while month <= 12:
balance = (balance - payment)*(1 + MonthlyInterestRate)
month = month + 1
if balance > 10:
LB = payment
balance = check
elif balance < -10:
UB = payment
balance = check
else:
print('Lowest Payment: ' + str(payment))
break
這是完整的代碼嗎?您還沒有在任何地方定義'annualInterestRate'或'balance'。 –
服務器不會給你完整的回溯?當您在計算機上本地運行時會遇到什麼錯誤? –
1.在線平地機上嘗試「hello world」示例,以確保正確處理輸入/輸出。 2.在你的機器上本地測試你的解決方案。 3.將利率邏輯封裝在單獨的對象中(分別測試二分查找和餘額計算,例如,如果有[複合](http://en.wikipedia.org/),'MonthlyInterestRate = annualInterestRate/12'是錯誤的/ wiki/Compound_interest))4.使用整數或decimal.Decimal進行貨幣算術運算。 – jfs