[英]Can someone explain to me why doesn't this piece of code work?
annual_salary = int(input("Your annual salary "))
semi_annual_raise = 0.07
r = 0.04
down_payment = 250000
epsilon = 100
low = 0
high = 10000
guess = (high + low)//2
best_saving_rate = (guess/10000)
months = 0
current_savings = 0
steps = 0
while abs(current_savings - down_payment) >= 100:
for i in range(36):
current_savings += best_saving_rate*(annual_salary/12) + (current_savings*r)/12
months +=1
if months%6 == 0:
annual_salary = annual_salary + semi_annual_raise*annual_salary
if current_savings < down_payment:
low = guess
else:
high = guess
steps += 1
guess = (high + low)//2
best_saving_rate = float(guess/10000)
print(steps)
print(best_saving_rate)
print(current_savings)
該代碼應該為試圖在 36 個月內有足夠的錢支付 250000 美元的人找到最佳儲蓄率。 我使用二分搜索,我認為我在正確的軌道上,但它不會工作。 我認為問題在於可變電流節省不會在每次迭代時重新初始化,我不知道如何讓它做到這一點。 請幫忙。
為什么您希望每次迭代時current_savings
都重置為0
? 您沒有在代碼中這樣做,那么什么會導致這種情況發生呢? 同樣從代碼的外觀來看,您也應該將months
重置為0
(盡管看起來for
循環索引變量i
實際上應該是月份)。
這修復了我可以看到的明顯錯誤:
while abs(current_savings - down_payment) >= 100:
current_savings = 0 # add this
for month in range(36): # Change this
current_savings += best_saving_rate * (annual_salary / 12) + (current_savings * r) / 12
# months += 1 <-- remove this
if months % 6 == 0:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.