2016-04-04 121 views
1

所以我基本上创建了我的函数(def main(),load(),calc()和print() 但我不知道如何允许用户输入信息的次数尽可能多,直到他们想要停止,就像我输入了5次,它也会输出5次,我已经尝试在def main()函数和加载函数中放置while循环,但它赢了“T停止时,我希望它。有人能帮忙吗?谢谢!虽然循环功能(Python)

def load(): 

    stock_name=input("Enter Stock Name:") 
    num_share=int(input("Enter Number of shares:")) 
    purchase=float(input("Enter Purchase Price:")) 
    selling_price=float(input("Enter selling price:")) 
    commission=float(input("Enter Commission:")) 

    return stock_name,num_share,purchase,selling_price,commission 

def calc(num_share, purchase, selling_price, commission): 

    paid_stock = num_share * purchase 
    commission_purchase = paid_stock * commission 
    stock_sold = num_share * selling_price 
    commission_sale = stock_sold * commission 
    profit = (stock_sold - commission_sale) - (paid_stock + commission_purchase) 
    return paid_stock, commission_purchase, stock_sold, commission_sale, profit 

def Print(stock_name,paid_stock, commission_purchase, stock_sold, commission_sale, profit): 

    print("Stock Name:",stock_name) 
    print("Amount paid for the stock:\t$",format(paid_stock,'10,.2f')) 
    print("Commission paid on the purchase:$", format(commission_purchase,'10,.2f')) 
    print("Amount the stock sold for:\t$", format(stock_sold,'10,.2f')) 
    print("Commission paid on the sale:\t$", format(commission_sale,'10,.2f')) 
    print("Profit(or loss if negative):\t$", format(profit,'10,.2f')) 

def main(): 

    stock_name,num_share,purchase,selling_price,commission = load() 
    paid_stock,commission_purchase,stock_sold,commission_sale,profit = calc(num_share, purchase, selling_price, commission) 
    Print(stock_name, paid_stock,commission_purchase, stock_sold, commission_sale, profit) 

main() 
+2

尽管您在函数Print()中不同地使用了第一个字母大写(func名称中的大小写与PEP 8相反),但它仍然是一个*非常差的选项来反映内置插件。我*强烈*建议更改名称。 – Signal

回答

2

你必须给用户某种方式来声明他们希望停止输入。一个很简单的方法对你的代码会将main()函数的全部函数包含在while循环:

response = "y" 
while response == "y": 
    stock_name,num_share,purchase,selling_price,commission = load() 
    paid_stock,commission_purchase,stock_sold,commission_sale,profit = calc(num_share, purchase, selling_price, commission) 
    Print(stock_name, paid_stock,commission_purchase, stock_sold, commission_sale, profit) 
    response = input("Continue input? (y/n):") 
1

一个更简单的方法将是两个做以下....

while True: 
    <do body> 
    answer = input("press enter to quit ") 
    if not answer: break 

或者 初始化变量,避免内if语句

sentinel = True 
while sentinel: 
    <do body> 
    sentinel = input("Press enter to quit") 

如果输入被按下时,sentinel被设置为空str,它将评估为False,并结束while循环。