I am trying to make a simple python program that takes 3 inputs
- Number of stocks I will Buy
- Price per share of stock when bought
- Price per share of stock when sold.
In this exercise, there is a 15% commission fee both when buying, and selling the stock.
The 4 outputs I am attempting to receive are:
- Price of bought stock (price per share when bought * number of shares)
- Commission on the bought stock
- Price of sold stock (price per share when sold * number of shares)
- Commission on the sold stock.
I am attempting to do this in a way that utilizes functions to stay organized. I realize that functions are not strictly necessary for this program, but the point of this exercise is to help me understand how to use functions a little better.
When I run my program, I receive this Error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "main.py", line 6, in main
pcos = calcAmount(n, ppsb)
TypeError: calcAmount() missing 1 required positional argument: 'ppss'
Here is my program:
def main():
com = 0.15
n = float(input("How many shares are in this block of stock?n"))
ppsb = float(input("What was the price-per-share when you BOUGHT the stock?n"))
ppss = float(input("What was the price-per-share when you SOLD the stock?n"))
pcos = calcAmount(n, ppsb)
pcom = calcCommission(com, pcos)
arec = calcAmount(n, ppss)
scom = calcCommission(com, arec)
print("Purchase Cost: " + str(pcos) + "nPurchase Commission: " + str(pcom) + "nAmount Received from Sale: " + str(arec) + "nSelling Commission: " + str(scom))
# Ask for share #,PSS bought, and PSS sold.
def calcAmount(n,ppsb,ppss):
pcos = n * ppsb
return pcos
arec = n * ppss
return arec
#
def calcCommission(com,pcos,arec):
pcom = com * pcos
return pcom
scom = com * arec
return scom
# Calculate Commission
The indention when copying / pasting to stack overflow ended up a little wonky. I’m not sure how to fix that.
I apologize if there are any egregious formatting errors, I am new to Python and Stack Overflow.
Advertisement
Answer
def main():
com = 0.15
n = float(input("How many shares are in this block of stock?n"))
ppsb = float(input("What was the price-per-share when you BOUGHT the stock?n"))
ppss = float(input("What was the price-per-share when you SOLD the stock?n"))
# we're passing three arguments to the function, as it needs all three
pcos, arec = calcAmount(n, ppsb, ppss)
# same here, I've added 'arec' argument the the function call
pcom, scom = calcCommission(com, pcos, arec)
print("Purchase Cost: " + str(pcos) + "nPurchase Commission: " + str(pcom) + "nAmount Received from Sale: " + str(arec) + "nSelling Commission: " + str(scom))
# Ask for share #,PSS bought, and PSS sold.
def calcAmount(n,ppsb,ppss):
pcos = n * ppsb
# we've removed 'return' statement, since code after it won't be executed
arec = n * ppss
# we're returning both values at the same time, and unpack them at the function call
return pcos, arec
def calcCommission(com,pcos,arec):
pcom = com * pcos
# same here, instead of calling 'return' twice (which won't work)
# we're returning both values at the same time as a tuple
# a,b = func()
# if function is called in this manner
# python will unpack retuned values and assign them to a and b
scom = com * arec
return pcom, scom
Good luck with python! :)