python - 有人可以向我解释为什么这段代码不起作用吗?
问题描述
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:
推荐阅读
- javascript - 当另一个子组件更改时更新一个子组件
- eclipse - eclipse CDT esp-idf 构建但不闪烁
- django -
- __全部__
- 此学科、类型和学期的内容清单已经存在。
- __全部__
- kubernetes - 如何在 Kubernetes 中按需启动 Pod?
- wordpress - 仅列出将 ACF 日期字段设置为昨天日期的 CPT 帖子
- frontend - 网站清除用户浏览器缓存的可靠方法不存在是否有原因?
- laravel - 使用附加参数获取 url 时未发现错误
- python - 使用变量的内容作为变量
- java - 安装 Eclipse 时出现错误消息(安装失败并出现错误)
- .htaccess - 从共享 htaccess 重定向 (301)