繁体   English   中英

试图计算并打印平均值并将其返回为 <function at> 而不是一个数字? 蟒蛇

[英]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()

当我运行程序时

  1. 它没有正确排序数字? 我是python的新手,所以我不知道是否有明显的错误
  2. 它将平均值和长度打印为< 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM