所以之前我创建了一个代码,提示用户输入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()
答案 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('%')))