![](/img/trans.png)
[英]How can I pass an object attribute to lambda function, as function parameter?
[英]How can I pass multiple values in a function parameter?
我正在尝试制作一个可以计算3个不同列表的复利的程序。 每个列表中的第一项是公式A = P(1 + r)^ n中需要的变量。 这些是说明。
Albert Einstein once said “compound interest” is man’s greatest invention. Use the equation A=P(1+r) n
,
where P is the amount invested, r is the annual percentage rate (as a decimal 5.0%=0.050) and n is the
number of years of the investment.
Input: 3 lists representing investments, rates, and terms
investment = [10000.00, 10000.00, 10000.00, 10000.00, 1.00]
rate = [5.0, 5.0, 10.0, 10.0, 50.00]
term = [20, 40, 20, 40, 40]
Output: Show the final investment.
$26532.98
$70399.89
$67275.00
$452592.56
$11057332.32
这是我到目前为止编写的代码:
P = [10000.00, 10000.00, 10000.00, 10000.00, 1.00]
r = [5.0, 5.0, 10.0, 10.0, 50.00]
n = [20, 40, 20, 40, 40]
# A=P(1+r)
def formula(principal,rate,years):
body = principal*pow((1 + rate),years)
print "%.2f" %(body)
def sort(lst):
spot = 0
for item in lst:
item /= 100
lst[spot] = item
spot += 1
input = map(list,zip(P,r,n))
sort(r)
for i in input:
for j in i:
formula()
我首先定义一个计算复利的函数,然后定义一个将利率转换为正确格式的函数。 然后使用map(我并不完全熟悉),我将每个列表的第一项分成新输入列表中的元组。 我想做的是找到一种方法,可以将元组中的三个项目输入到公式函数中的原理,比率和年份。 我愿意提出批评和建议。 一般来说,我对编程还是比较陌生的。 谢谢。
首先,我认为您应该从formula
return
一些内容,即您的计算结果:
def formula(principal,rate,years):
return principal*pow((1 + rate),years) #return this result
那么您可以使用formula
的return
值-用于打印还是用于其他计算。
另外,由于三个列表中的项目数量相同,为什么不只使用range(len(p))
遍历它们呢?
for x in range(len(p)):
print(formula(p[x],r[x],n[x]))
x in range(len(p))
x将生成具有x值的迭代:
0, 1, ..., len(p) - 1 # in your case, len(p) = 5, thus x ranges from 0 to 4
p[x]
是您要从p
获得第x-th-indexed
元素的方式。 把它放在您的上下文中,您将获得如下组合:
when x= principal rate years
----------------------------------
0 10000.00 5.0 20
1 10000.00 5.0 40
2 10000.00 10.0 20
3 10000.00 10.0 40
4 1.00 50.0 40
这样,您不需要使用tuple
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.