从文件列表中获得平均值

时间:2014-09-19 02:33:33

标签: python file store average

所以之前我创建了一个代码,提示用户输入5个不同的测试分数,然后将该列表保存到test.txt。代码很精彩! 这是我的代码:

scorefile=open('test.txt','w')

for count in range(5):

    print('Please enter test scores')

    score=input('Test score:')

    scorefile.write(str(score)+'%' + '\n')

scorefile.close()

但是现在,我遇到了一个问题。我有代码来读取文件。它很棒!但是当我试图从列表中获得平均值时,我所得到的只是0.0。我一直在阅读关于python的书,以了解如何使这项工作,但我现在严重陷入困境。救命? 这是我的代码:

scorefile=open('test.txt', 'r')

for line in scorefile:

    print(line, end='')

    score=scorefile

average = sum(score) / 5

print('The test average is', average)

scorefile.close()

2 个答案:

答案 0 :(得分:0)

这一行score=scorefile没有按照你的想法行事。事实上,它根本没有任何用处。

也许你想要:

with open('test.txt') as scorefile:
    scores = [int(line.replace('%','')) for line in scorefile]
    average = sum(scores) / len(scores)

答案 1 :(得分:0)

score=scorefile只是将文件描述符分配给score。它实际上并没有读取内容,而是按照您的预期将它们分配给score变量。

您需要读取文件中的行,删除'%'字符,将每行转换为浮点数(因为它们是我假设的百分比),将它们相加并取平均值。

像这样:

with open('input') as in_file:
    data = in_file.readlines()
average = sum([float(a.strip('%')) for a in data]) / len(data)
print(average)

[float(a.strip('%')) for a in data]是一个简写符号(也称为列表理解):

a_list = []
for a in data:
    a_list.append(float(a.strip('%')))