如何在Python中找到txt文件中列的平均值?

2024-04-25 20:47:29 发布

您现在位置:Python中文网/ 问答频道 /正文

练习一些Python,我试图解决一个问题,这个问题要求在一个文本文件中获得学生的平均年龄。例如下面显示的.txt文件。你知道吗

   Sam, 23
   Jack 20
   Tara 19
   Stacy 22

通常我会用一条错误消息重新跟踪我的步骤,但我的输出只是一个0。如果我不确定用readlines代替read,那么我也不确定。你知道吗

def sumNums():
    infile = open('student_age.txt', 'r')
    fileContents = infile.read()
    infile.close

    count= 0

    for lines in fileContents.split(','):
        if lines.isdigit():
            count += lines

    print(sum(count) / len(lines))

实际输出应该是21,因为84/4=21,但我得到0


Tags: 文件txtreadsamcount学生infilelines
3条回答

从简单开始。从简单地编写代码开始,像这样遍历逗号分隔文件的行,并打印出每行的第二个值(数字)。你知道吗

with open('path/to/file.csv') as f:
    for line in f:
        field1, field2 = line.split(',')
        print(field2)

然后你就可以开始思考如何将这些值保存在内存中并求平均值。你知道吗

with open('path/to/file.csv') as f:
    total = 0
    count = 0
    for line in f:
        field1, field2 = line.split(',')
        total += int(field2)
        count += 1

result = total / count

然后,您可以考虑重构它以利用stdlibcsv模块。你知道吗

import csv

with open('path/to/file.csv') as f:
    reader = csv.reader(f)
    numbers = [int(num) for _, num in reader]
    total, count = sum(numbers), len(numbers)

result = total / count

试用

int(float("age"))

这应该将字符串转换为数值,从中可以很容易地取平均值

sum("age")/len("age")
def sumNums():
    with open('student_age.txt', 'r') as f:
        count = i = 0
        for line in f:
            name, number = line.split(',')
            if number.strip().isdigit():
                count += int(number)
            i += 1

        print(count / i)

sumNums()

相关问题 更多 >