如何在函数参数中传递多个值?

时间:2016-03-07 17:15:14

标签: python python-2.7

我正在尝试用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(我并不完全熟悉)将每个列表的第一项分成新输入列表中的元组。我想要做的是找到一种方法将元组中的三个项目输入到公式函数中的原则,速率和年份。 我很乐意批评和建议。我对编程总体上还是比较新的。 谢谢。

1 个答案:

答案 0 :(得分:1)

首先,我认为您应该return来自formula的某些内容,即您的计算:

def formula(principal,rate,years):
    return principal*pow((1 + rate),years) #return this result

然后您可以使用return中的formula值 - 无论是打印还是用于进一步计算的任何其他用途。

此外,由于您的三个列表中的项目数量相同,为什么不使用range(len(p))迭代它们?

for x in range(len(p)):
    print(formula(p[x],r[x],n[x]))

x in range(len(p))将使用x值生成迭代:

0, 1, ..., len(p) - 1 # in your case, len(p) = 5, thus x ranges from 0 to 4

p[x]就是你想要从x-th-indexed获得p元素的方式。把它放在你的上下文中你会得到这样的组合:

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