2016-04-04 4 views
1

Поэтому я в основном создал свои функции (def main(), load(), calc() и print(). Но я не знаю, как я могу позволить пользователю вводить как много раз, как он хочет, пока они не захотят остановиться. Как и я, они вводят 5 раз, это также выводит 5 раз. Я попытался поместить цикл while в функцию def main() и функцию загрузки, но он выиграл «т остановить, когда я хочу его. Может кто-то помочь? Спасибо!Хотя функция Loop in (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 

альтернативно инициализировать переменную и избежать внутренней, если заявление

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

если enter нажата, дозор установлен на пустую строку, которая будет оценивать значение False, завершающее цикл while.