每年贴现率不一样,如何不通过单独计算每年的净现值得到总净现值

img


自己尝试两种做了一下也不知道对不对,第一题说用一个zipped loop for years and a second loopfor months。
然后 More challenging那里完全没有思路,尝试用enumerate但是还是弄不出。
第一种# Your code goes here
Years=[2019,2020,2021,2022,2023,2024,2025,2026,2027,2028]
Rates=[0.005,0.00475,0.0045,0.00425,0.004,0.00375,0.0035,0.00325,0.003,0.00275]
npv=0
for year,Rate in zip(Years,Rates):
if year<=2019:
for m in range(4):
npv=npv+500/(1+Rate)(2+3m)
elif 2019<year<=2020:
for m in range(4):
npv=npv+500/((1+0.005)12)*(1+Rate)(2+3*m)
elif 2020<year<=2021:
for m in range(4):
npv=npv+500/(((1+0.005)
(1+0.00475))12)*(1+Rate)(2+3m)
elif 2021<year<=2022:
for m in range(4):
npv=npv+500/(((1+0.005)
(1+0.00475)(1+0.0045))12)*(1+Rate)(2+3*m)
elif 2022<year<=2023:
for m in range(4):
npv=npv+500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425))12)*(1+Rate)(2+3m)
elif 2023<year<=2024:
for m in range(4):
npv=npv+500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004))12)*(1+Rate)(2+3*m)
elif 2024<year<=2025:
for m in range(4):
npv=npv+500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004)(1+0.00375))12)*(1+Rate)(2+3m)
elif 2025<year<=2026:
for m in range(4):
npv=npv+500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004)(1+0.00375)(1+0.0035))12)*(1+Rate)(2+3*m)
elif 2026<year<=2027:
for m in range(4):
npv=npv+500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004)(1+0.00375)(1+0.0035)(1+0.00325))12)*(1+Rate)(2+3m)
elif 2027<year<=2028:
for m in range(4):
npv=npv+500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004)(1+0.00375)(1+0.0035)(1+0.00325)*(1+0.003))12)*(1+Rate)(2+3*m)
print(npv)
第二种
v=sum([500/(1+0.005)
(2+3m) for m in range(0,4)])
m=sum([500/((1+0.005)12)*(1+0.00475)(2+3*m) for m in range(0,4)])
n=sum([500/(((1+0.005)
(1+0.00475))12)*(1+0.0045)(2+3m) for m in range(0,4)])
l=sum([500/(((1+0.005)
(1+0.00475)(1+0.0045))12)*(1+0.00425)(2+3*m) for m in range(0,4)])
g=sum([500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425))12)*(1+0.004)(2+3m) for m in range(0,4)])
f=sum([500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004))12)*(1+0.00375)(2+3*m) for m in range(0,4)])
w=sum([500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004)(1+0.00375))12)*(1+0.0035)(2+3m) for m in range(0,4)])
q=sum([500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004)(1+0.00375)(1+0.0035))12)*(1+0.00325)(2+3*m) for m in range(0,4)])
e=sum([500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004)(1+0.00375)(1+0.0035)(1+0.00325))12)*(1+0.003)(2+3m) for m in range(0,4)])
o=sum([500/(((1+0.005)
(1+0.00475)(1+0.0045)(1+0.00425)(1+0.004)(1+0.00375)(1+0.0035)(1+0.00325)*(1+0.003))12)*(1+0.00275)(2+3*m) for m in range(0,4)])
v+m+n+l+g+f+w+q+e+o