你刚刚大学毕业,在北京找到了一份很好的工作,决定开始存钱买房。由于北京的房价很高,你要攒几年钱才能付得起房子的首付。
现根据以下假定来计算你需要多长时间才能攒够首付款:
1.将你想购买的房子的总价称为total_cost。
2.将首付款占总房价的比例称为portion_down_payment。为简单起见,假设portion_down_payment = 0.30(30%)。
3.将存款金额称为current_savings。你的存款从0元开始。
4.假设你的年薪是annual_salary,按12个月平均发放,单位是元。
5.假设你每个月都要拿出一定百分比的工资来存首付。称为portion_saved,此值为一个表示百分比的整数,例如50表示50%。
6.假定你每6个月加一次工资,每半年加薪比例semi_annual_raise是一个表示百分比的整数,例如7表示7%,即第7个月的月初涨一次工资,工资涨幅为7%,以后每过6个月再涨一次工资。
7.假设你每个月都是月初发工资,同时会收到上一个月的存款利息,存款年利率interest_rate固定为2.25%。
写一个程序来计算你需要多少个月才能攒够钱付定金,不足一个月按一个月计算。
total_cost = float(input()) # total_cost为当前房价
annual_salary = float(input()) # 年薪
portion_saved = float(input()) / 100
# 月存款比例,输入30转为0.30(即30%)
semi_annual_raise = float(input()) / 100
# 输入每半年加薪比例,输入7转化为0.07(即7%)
portion_down_payment = 0.3
#首付比例,浮点数
down_payment = portion_down_payment * total_cost#首付款
print('首付', down_payment)
current_savings = 0
# 存款金额,从0开始
number_of_months = 1
monthly_salary = annual_salary / 12
# 月工资
monthly_deposit = monthly_salary * portion_saved # 月存款
while True:
current_savings += 2.25 * 0.01 * current_savings / 12 #上个月的利息
current_savings = current_savings + monthly_deposit # 存款
if number_of_months % 12 == 0:
print("第{}个月月末有{:,.0f}元存款".format(number_of_months, current_savings)) # 每12个月输出一次存款,保留0位小数,使用千分符
if current_savings >= down_payment:
break
if number_of_months % 6 == 0:
monthly_deposit = monthly_deposit * (1 + semi_annual_raise) # 加薪
number_of_months = number_of_months + 1
print(f'需要{number_of_months}个月可以存够首付')