Python 2.7意思是列表的总和

时间:2015-11-01 18:04:39

标签: python-2.7

我是Python新手并且有一些任务我正在尝试获取从txt文件中读取的列表的总和和平均值。 我提出的代码是:

def FileToList (filename):
    result = []
    try:
        f = open (filename,'r')
        for l in f.readlines ():
            result.append (l.strip())
        return result
    except IOError: 
        print ('File name not correct!')
        return []

infile = raw_input ('Please enter file.txt : ')
lines = FileToList (infile)
for list in lines:
    print (l)

它可以工作并返回所有值,但我在努力计算它们?

2 个答案:

答案 0 :(得分:2)

我假设您的输入文件包含浮点数,每行一个数字。 以下程序忽略空白行,并在没有数字时处理边缘情况。

BTW我不喜欢你的异常处理。它隐藏了实际原因。恕我直言,最好不要处理这个例外。这将为用户提供有关确切错误的更好反馈。

def calc_stats(filename):
    sum = 0.0
    cnt = 0
    for line in open(filename,"rt"):
        line = line.strip()
        if not line:
            continue # skip blank lines
        sum += float(line)
        cnt += 1
    return (sum, cnt)

infile = raw_input ('Please enter file.txt : ')
sum, cnt = calc_stats(infile)
if cnt == 0:
    print("sum=%f, count=%d" % (sum, cnt))
else:        
    print("sum=%f, count=%d, average=%f" % (sum, cnt, sum/cnt))

答案 1 :(得分:0)

假设每行包含分隔的值(通过空格或逗号),您只需将值转换为float,然后计算总和和平均值:

for list in lines:    
    #convert to floats:
    flist = map(float, list.split())
    #calculate sum
    s = sum(flist)
    n = len(flist)        
    print "Sum: %f" % (s)
    if n>0:
       avg = s/n
       print "Average: %f" % (avg)

注意:如果您的数据被逗号分割,则应使用list.split(',')