简体   繁体   中英

How can I pass multiple values in a function parameter?

I am trying to make a program that calculates compound interest with 3 different lists. The first item in each list are the variables needed in the formula A=P(1+r)^n. These are the instructions.

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

This is the code that I have written so far:

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()

I firstly define a function to calculate the compound interest, then I define a function to convert the rates to the proper format. Then using map (which im not completely familiar with)I separate the first item of each list into a tuple within the new input list. What i am trying to do is find a way to input the three items within in the tuple into principle, rate and years in the formula function. I am open to critiquing, and advice. I am still fairly new with programming in general. Thank you.

Firstly, I think you should return something from your formula , that is, your calculation:

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

then you can use the return value from the formula - be it for printing or any other use for further calculation.

Also, since you have the same amount of items in your three lists, why not just using range(len(p)) to iterate over them?

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

x in range(len(p)) will generate iteration with x value:

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

And p[x] is the way you say you want to get x-th-indexed element from p . Putting it you your context you will get combination like this:

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

This way, you do not need to use tuple

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM