Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在哪里添加for循环?股票交易_Python - Fatal编程技术网

Python 在哪里添加for循环?股票交易

Python 在哪里添加for循环?股票交易,python,Python,我是python新手,我还在学习。这花了我几个小时,但我知道如何做的功能,但我有一个困难的时间让用户输入多少他们想输入。输出只工作一次,我确信这是因为for循环被分为两个函数,但我似乎无法确定for循环是否只进入加载,如果是,会影响def calc(): 在for循环中: for d in range(num_stucks): #todo prnt(a, b, c, d, e, f) 因为当您运行一次循环时,您将返回值,因此它将中断循环。在for循环中: for d

我是python新手,我还在学习。这花了我几个小时,但我知道如何做的功能,但我有一个困难的时间让用户输入多少他们想输入。输出只工作一次,我确信这是因为for循环被分为两个函数,但我似乎无法确定for循环是否只进入加载,如果是,会影响def calc():

在for循环中:

for d in range(num_stucks):
       #todo
       prnt(a, b, c, d, e, f)
因为当您运行一次循环时,您将返回值,因此它将中断循环。

在for循环中:

for d in range(num_stucks):
       #todo
       prnt(a, b, c, d, e, f)

因为当您运行一次循环时,会返回值,因此它会中断循环。

问题在于您在
load
函数的
for
循环中应用的
return
语句

把它带到圈外。若要调用其他函数,请在循环内调用它们。就像在您的例子中,调用
call
函数(您在
main
中调用)而不是返回语句

def main():
    num_stocks,name,numsh,pp,sp,comm=load()


def load():
    #load inputs
    num_stocks=int(input("How many stocks do you want processed?"))
    for i in range (num_stocks):
        print("Stock number",i+1)
        print(".....................")
        name=input("Enter stock name:\n")
        numsh=float(input("Number of Shares:\n"))
        pp=float(input("Enter Purchase Price:\n"))
        sp=float(input("Enter Selling Price:\n"))
        comm=float(input("Enter Commission:\n"))
        print("Stock Results",end='')
        print("..................")
        calc(num_stocks,name,numsh,pp,sp,comm)

def calc(num_stocks,name,numsh,pp,sp,comm):
    #calculations
    for d in range (num_stocks):
        Amtpaid=numsh*pp
        bycomm=Amtpaid*comm
        stocksold=numsh*sp
        scomm=stocksold*comm
        profit=(Amtpaid+comm)-(scomm-comm)
        prnt(Amtpaid,bycomm,stocksold,scomm,profit)

def prnt(Amtpaid,bycomm,stocksold,scomm,profit):
    #print outputs
    print("Amount paid for stock:$",format(Amtpaid,',.2f'))
    print("Commision paid on the purchase:$",format(bycomm,',.2f'))
    print("Amount the stock sold for:$:",format(stocksold,',.2f'))
    print("Commission paid on the sale:$",format(scomm,',.2f'))
    print("Profit:$",format(profit,',.2f'))
    print("\n")


main()

这就是解决方案。

问题在于您在
load
函数中的
for
循环中应用的
return
语句

把它带到圈外。若要调用其他函数,请在循环内调用它们。就像在您的例子中,调用
call
函数(您在
main
中调用)而不是返回语句

def main():
    num_stocks,name,numsh,pp,sp,comm=load()


def load():
    #load inputs
    num_stocks=int(input("How many stocks do you want processed?"))
    for i in range (num_stocks):
        print("Stock number",i+1)
        print(".....................")
        name=input("Enter stock name:\n")
        numsh=float(input("Number of Shares:\n"))
        pp=float(input("Enter Purchase Price:\n"))
        sp=float(input("Enter Selling Price:\n"))
        comm=float(input("Enter Commission:\n"))
        print("Stock Results",end='')
        print("..................")
        calc(num_stocks,name,numsh,pp,sp,comm)

def calc(num_stocks,name,numsh,pp,sp,comm):
    #calculations
    for d in range (num_stocks):
        Amtpaid=numsh*pp
        bycomm=Amtpaid*comm
        stocksold=numsh*sp
        scomm=stocksold*comm
        profit=(Amtpaid+comm)-(scomm-comm)
        prnt(Amtpaid,bycomm,stocksold,scomm,profit)

def prnt(Amtpaid,bycomm,stocksold,scomm,profit):
    #print outputs
    print("Amount paid for stock:$",format(Amtpaid,',.2f'))
    print("Commision paid on the purchase:$",format(bycomm,',.2f'))
    print("Amount the stock sold for:$:",format(stocksold,',.2f'))
    print("Commission paid on the sale:$",format(scomm,',.2f'))
    print("Profit:$",format(profit,',.2f'))
    print("\n")


main()

这就是解决方案。

我只需要在
main()
中为
循环设置一个
,它驱动对您定义的函数的一系列调用来处理每个事务。祝贺你没有使用全局变量,这可能是我看到新手犯的第一个错误

我还强烈建议您开始学习(并遵循)代码并使用更多的空格,这是您的朋友,因为它使您的代码更具可读性

def main():
    num_stocks = int(input("How many stocks do you want processed?"))
    for stock_number in range(1, num_stocks+1):
        name, numsh, pp, sp, comm = load(stock_number)
        amtpaid, bycomm, stocksold, scomm, profit = calc(name, numsh, pp, sp,
                                                         comm)
        prnt(amtpaid, bycomm, stocksold, scomm, profit)

def load(stock_number):
    # load inputs for one transaction
    print("Stock number", stock_number)
    print(".....................")
    name = input("Enter stock name:\n")
    numsh = float(input("Number of Shares:\n"))
    pp = float(input("Enter Purchase Price:\n"))
    sp = float(input("Enter Selling Price:\n"))
    comm = float(input("Enter Commission:\n"))
    print("Stock Results", end='')
    print("..................")
    return name, numsh, pp, sp, comm

def calc(name, numsh, pp, sp, comm):
    # calculations for one transaction
    amtpaid = numsh*pp
    bycomm = amtpaid*comm
    stocksold = numsh*sp
    scomm = stocksold*comm
    profit = (amtpaid+comm) - (scomm-comm)
    return amtpaid, bycomm, stocksold, scomm, profit

def prnt(amtpaid, bycomm, stocksold, scomm, profit):
    # print output for one transaction
    print("Amount paid for stock: ${:,.2f}".format(amtpaid))
    print("Commision paid on the purchase: ${:,.2f}".format(bycomm))
    print("Amount the stock sold for: ${:,.2f}".format(stocksold))
    print("Commission paid on the sale: ${:,.2f}".format(scomm))
    print("Profit: ${:,.2f}".format(profit))
    print("\n")

main()

我只需要在
main()
中有一个
for
循环,它驱动对您定义的函数的一系列调用来处理每个事务。祝贺你没有使用全局变量,这可能是我看到新手犯的第一个错误

我还强烈建议您开始学习(并遵循)代码并使用更多的空格,这是您的朋友,因为它使您的代码更具可读性

def main():
    num_stocks = int(input("How many stocks do you want processed?"))
    for stock_number in range(1, num_stocks+1):
        name, numsh, pp, sp, comm = load(stock_number)
        amtpaid, bycomm, stocksold, scomm, profit = calc(name, numsh, pp, sp,
                                                         comm)
        prnt(amtpaid, bycomm, stocksold, scomm, profit)

def load(stock_number):
    # load inputs for one transaction
    print("Stock number", stock_number)
    print(".....................")
    name = input("Enter stock name:\n")
    numsh = float(input("Number of Shares:\n"))
    pp = float(input("Enter Purchase Price:\n"))
    sp = float(input("Enter Selling Price:\n"))
    comm = float(input("Enter Commission:\n"))
    print("Stock Results", end='')
    print("..................")
    return name, numsh, pp, sp, comm

def calc(name, numsh, pp, sp, comm):
    # calculations for one transaction
    amtpaid = numsh*pp
    bycomm = amtpaid*comm
    stocksold = numsh*sp
    scomm = stocksold*comm
    profit = (amtpaid+comm) - (scomm-comm)
    return amtpaid, bycomm, stocksold, scomm, profit

def prnt(amtpaid, bycomm, stocksold, scomm, profit):
    # print output for one transaction
    print("Amount paid for stock: ${:,.2f}".format(amtpaid))
    print("Commision paid on the purchase: ${:,.2f}".format(bycomm))
    print("Amount the stock sold for: ${:,.2f}".format(stocksold))
    print("Commission paid on the sale: ${:,.2f}".format(scomm))
    print("Profit: ${:,.2f}".format(profit))
    print("\n")

main()

你能把代码贴在这里吗?请不要仅仅给出一张图片。仅仅发布代码链接是不好的。你应该直接写在这里。你想先输入所有的输入,然后再打印所有的输出吗;或者您想输入一种股票的输入,打印该股票的输出,输入下一种股票的输入,等等?您能将代码粘贴在这里吗?请不要仅仅给出一张图片。仅仅发布代码链接是不好的。你应该直接写在这里。你想先输入所有的输入,然后再打印所有的输出吗;或者您想输入一种股票的输入,打印该股票的输出,输入下一种股票的输入,等等?那么我必须用打印语句替换返回语句吗?否。使用“Amtpaid,bycomm,stocksell,scomm,price=calc(num_stocks,name,numsh,pp,sp,comm)”而不是打印,那么我是否必须用打印语句替换返回语句?否。使用“Amtpaid,bycomm,stocksell,scomm,profit=calc(num_stocks,name,numsh,pp,sp,comm)”代替打印,因此我不使用return,而是将其替换为以下函数,在这种情况下,我将使用prnt()?这将是for循环的内部还是必须是外部?因此,在本例中,我将用以下函数替换它,而不是执行return,我将使用prnt()?这将是for循环的内部还是必须是外部?