2016-10-13 5 views
0
def load():  
    global name 
    global count 
    global shares 
    global pp 
    global sp 
    global commission 
    name=input("Enter stock name OR -999 to Quit: ") 
    count =0 
    while name != '-999': 
     count=count+1 
     shares=int(input("Enter number of shares: ")) 
     pp=float(input("Enter purchase price: ")) 
     sp=float(input("Enter selling price: ")) 
     commission=float(input("Enter commission: ")) 
     calc() 
     display() 
     name=input("\nEnter stock name OR -999 to Quit: ") 

def calc(): 
    totalpr=0 
    global amount_paid 
    global amount_sold 
    global profit_loss 
    global commission_paid_sale 
    global commission_paid_purchase 
    global totalpr 
    amount_paid=shares*pp 
    commission_paid_purchase=amount_paid*commission 
    amount_sold=shares*sp 
    commission_paid_sale=amount_sold*commission 
    profit_loss=(amount_sold - commission_paid_sale) -(amount_paid + commission_paid_purchase) 
    totalpr=totalpr+profit_loss 

def display(): 
    print("\nStock Name:", name) 
    print("Amount paid for the stock:  $",  format(amount_paid, '10,.2f')) 
    print("Commission paid on the purchase: $", format(commission_paid_purchase, '10,.2f')) 
    print("Amount the stock sold for:  $", format(amount_sold, '10,.2f')) 
    print("Commission paid on the sale:  $", format(commission_paid_sale, '10,.2f')) 
    print("Profit (or loss if negative): $", format(profit_loss, '10,.2f')) 

def main(): 
    load() 


main() 

print("\nTotal Profit is $", format(totalpr, '10,.2f')) 

最後のコード行は問題を示しています。 "totalpr"の表示は、例えば3つの入力株の実行集計ではありません。それは単に再現された利益の損失です。誰かが株価データを入力することを何度も決めている間に、それを正確に表示するにはどうすればよいですか?それが動作する方法:誰かが '-999'というセンチネルを入力すると、プログラムはすべてのインスタンスからすべてのprofit_lossを集めて出力します。それでおしまい。合計が正しく印刷されない

+0

スタート(CALC 'の先頭に' totalpr = 0 'を設定しないことになる) '... –

+0

はありませんwork.'totalpr = 0'は 'calc()'の先頭か 'global totarpr'の直後にあります – Gamification

+0

' calc'が呼ばれるたびに 'totalpr'をリセットしています... – MisterMiyagi

答えて

0

calcが呼び出されるたびにtotalprをリセットしています。

def calc(): 
    totalpr=0 # resets to zero every time 
    # ... 
    totalpr=totalpr+profit_loss # same as `totalpr = 0 + profit_loss` 

代わりに、あなたはcalctotalpr外を初期化する必要があります。

totalpr = 0 # set to zero only once 
def calc(): 
    # ... 
    totalpr = totalpr + profit_loss # same as `totalpr += profit_loss` 
+0

ありがとうございます。ビンゴ。 – Gamification

関連する問題