使用Python 3.6
你毕业于麻省理工学院,现在工作很棒!你搬到旧金山湾区,并决定你想开始储蓄买房子。由于湾区的房价非常高,你会发现在你有能力支付房屋的首付款之前,你需要储蓄几年。在A部分中,我们将根据以下假设确定您需要多长时间才能存入足够的资金来支付首付款:
呼叫你的梦想家园TOTAL_COST的成本。
呼叫所需的预付款portion_down_payment成本的一部分。对于 简单起见,假设portion_down_payment = 0.25(25%)。
调用已保存迄今current_savings量。开始时你有电流 $ 0储蓄。
假设你投资你的活期储蓄在刀刃上,用R的年回报率(换句话说, 在每个月底,您会收到额外的current_savings * R / 12的资金投入 你的储蓄 - 12是因为r为年率)。假设你的投资赚取 返回R = 0.04(4%)的
假设你的年薪annual_salary。
假设你打算每月奉献了一定的工资来节约 首付。呼叫portion_saved。此变量应在十进制形式(即0.1 为10%)。
- 醇>
在每个月末,您的储蓄将通过您的投资回报加上月薪(年薪/ 12)的百分比来增加。 编写一个程序来计算需要多少个月才能节省足够的钱来支付首付款。您将希望主变量是浮点数,因此您应该将用户输入转换为浮点数
到目前为止,我有这个基本代码:
annual_salary = float(input("Type annual salary here : "))
portion_saved = float(input("Type the portion you want to save (as a decimal) : "))
total_cost = float(input("Type the cost of your dream house here : "))
monthly_salary = (annual_salary / 12.0)
portion_down_payment = 0.25 * total_cost
current_savings = 0 + ???
returns = (current_savings * 0.4) / 12
overall_savings = returns + (portion_saved * monthly_salary)
months = ???`
我的问题是我不知道如何计算月份 我不知道是否需要创建一个IF语句,一个循环,或者根本不需要它们。
答案 0 :(得分:3)
这几个月是达到所需金额所需的价值。
例如,您希望循环直到您有足够的首付款。
months = 0
# Want to exit the loop when there is enough savings for a down payment
while current_savings < portion_down_payment:
current_savings += current_savings * (0.4 / 12) # Monthly interest
current_savings += portion_saved # Monthly savings
months += 1
print("It will take {} months to save!".format(months))
答案 1 :(得分:0)
你只需要一个while循环: 将months变量初始化为0并确保节省不超过并且小于或等于预付定金。同时确保将Current Saving设置为0
Current_Saving=0
rate=0.04/12
monthly_savings = monthly_salary*0.1
i=0
while (Current_Saving <= down_payment):
Current_Saving = Current_Saving+(monthly_savings)*rate + monthly_savings
i=i+1
print(i)
我将给出总月数。月薪可以通过将年薪除以12来获得。
答案 2 :(得分:0)
这可以通过分析解决。
down_payment_rate = 0.25
saving_rate = 0.10
r = 0.04 #investment rate
target = total_cost * down_payment_rate
M = annual_salary/12*saving_rate/12 #Monthly savings
问题是解决以下问题:
target = M*(1+r) + M*(1+r)^2 + M*(1+r)^3 ... M*(1+r)^N
以上是几何系列,其中N是到达目标的月数。这可以简洁地表达为:
let g = 1+r:
target = M * (1-g^N)/(1-g)
你已经知道g,target,M,唯一要解决的是N.你可以使用代数找到结果。即:N = log(1-目标*(1-g)/ M)/ log(g)