如何在main()中运行一个函数然后运行另一个函数

时间:2015-12-13 18:50:59

标签: python function python-2.7

所以我只是在学习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()

1 个答案:

答案 0 :(得分:0)

其他函数变量/ function scope无法访问每个函数内的变量。 使用它们的一种方法是让函数返回这些值。这是一个简化的例子:

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