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