簡體   English   中英

有人可以向我解釋為什么這段代碼不起作用嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM