如何在main()中依次运行一个函数和另一个函数

2024-09-30 18:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我只是在学习Python,并且正在做一个在线练习来使用Python语言和软件本身。现在我正在努力使一个函数(getData())运行,然后将该函数的结果运行到另一个函数(getStats())中,该函数都带有main()。每一个单独工作,但我有一个问题与main()。我可以让我的第一个getData()运行并生成我的列表,但我无法让该列表直接运行到getStats()。它实际上再次运行getData(),然后在输入时返回错误消息。有没有人建议我不要收到那个错误消息,然后实际运行我的getStats()?你知道吗

def getData():
    import math
    pop = []
    while True:
        user = raw_input("Please enter a population number (-1 to quit): ") 
        pop.append(user)
        if user == '-1':
            break
        if user <= '0':
            print "Population not valid, please input a value higher then 0"
    new_pop = map(int, pop)
    pop2 = filter(lambda x:x >=1, new_pop)
    print "Your population list is: ", pop2
    return
def getStats():
    i = ""
    asc = sorted(i) 
    print "The collected data in the asecending order", asc 
    dec = sorted(i, reverse = True)
    print "The collected data in the descending order", dec 
    maxi = max(i)
    print "The maximum of the collected data is", maxi 
    mini = min(i)
    print "The minimum of the collected data is",mini 
    def getMean(i):
        aver = round(sum(i), 2)/round(len(i), 2)
        print "The average of the collected data is %.2f" % aver 
    getMean(i)
    def getStdev(i):
        aver = sum(i)/len(i)
        var = sum(pow(user-aver,2) for user in i)/len(i)
        stdev = math.sqrt(var)
        print "The standard deviation of the collected data is %.2f" % stdev 
    return
def main():
    getData()
    getStats(getData())
main()

Tags: ofthe函数dataismaindefpop
1条回答
网友
1楼 · 发布于 2024-09-30 18:22:58

每个函数中的变量不能被其他函数variable/functionscope访问。 使用它们的一种方法是让函数返回这些值。下面是一个简化的示例:

def get_data():
    data = raw_input('Ask for data')
    return data

def get_stats(data):
   sorted_data = sorted(data)
   print 'Sorted:', sorted_data

data =  get_data() # get_data will point 'data' to the value returned
get_stats(data)    # call get_stats, and pass 'data' as an argument 

其他一些想法:

  • 您并不真正需要main()函数。它什么也没做。 更常见的是,添加条件语句仅在运行文件本身时运行,而不是在将其作为模块导入时运行:

    if __name__ == '__main__': data = get_data() get_stats(data)

  • 签出PEP 008

    通常导入应该在文件的开头(Imports

    函数名是camel_case

相关问题 更多 >