
[英]Is it advisable to use print statements in a python function rather than return
[英]trying to calculate and print the mean and its returning as a <function at> rather than a number? PYTHON
我有我的程序在python中,我使用了带有数字的外部文件,我创建了一个列表,用于存储的数字,然后我需要找到平均值,标准偏差和列表的长度,在我的程序看起来像这样:
data = open( "gauss.dat", "r" )
numbers=[]
for line in data:
numbers.append(line)
sorted(numbers)
def length(numbers):
length = len(numbers)
return length
def mean(numbers):
sum = 0
for element in numbers:
sum += element
mean = sum/length
return (mean)
def main():
global history
print (length)
print('The smallest number is ' + numbers[0])
print ('The largest number is ' + numbers[-1])
print(mean)
return True
if __name__ == "__main__":
main()
当我运行程序时
< function length at 0x039475B0 >
, < function mean at 0x03947630 >
。 我不知道如何将其更改为数字? 希望你能帮忙。
你需要调用函数length
和/或mean
:
print(length(numbers))
print(mean(numbers))
在python中,函数本身就是对象。 所以他们有一个打印的表示。 您可以将它们分配给当前命名空间中的不同名称,将它们传递给其他函数等。例如
MeAn = mean # This is a violation of PEP 8!
print(MeAn(numbers)) #same as `print(mean(numbers))`
换句话说,当你告诉python时:
print(mean)
它打印有关函数对象 mean
。 它不会运行该函数,因此无法获得它的返回值(毕竟,它应该如何知道要用作输入参数?)
关于1)
一个强大的工具:交互式shell与help
-command相结合:
>>> help(sorted)
Help on built-in function sorted in module __builtin__:
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
所以我们也需要
numbers = sorted(numbers)
要么
numbers.sort()
(有关详细信息,请参阅help(numbers.sort)
)
关于2)
如mgilson所述:你必须调用这个函数:
print(mean(numbers))
关于评论
同
for line in data:
numbers.append(line)
您逐行读取文件作为字符串 。 但要进行一些计算,您需要一个数字类型。 一种方法是:
for line in data:
numbers.append(float(line))
这种转换的文本line
成浮动型。 前导或尾随空格被裁剪(至少在我的python-interpreter中),但是你可能遇到空行或错误行的问题。
sorted
返回可迭代的排序版本,但不会更改它,您需要其中一个:
numbers = sorted(numbers)
要么:
numbers.sort()
关于函数,您需要使用必要的参数调用它们 - 例如:
mean = sum/length(numbers)
你的代码中的几个地方都有这个bug。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.