从一个文本文件grade.txt内读入任意多个学生的分数,求出最高分,最低分,平均分输出。
输入形式:一个文件,文件中分数由换行隔开,一行一个值,文件名为grade.txt,输入的分数都是整数。
输出形式:计算出grade.txt中所有最高分,最低分和平均分3行输出,统计值用round(x)去整数
该回答引用chatgpt:
def calculate_grades(file_name):
with open(file_name, 'r') as file:
scores = [int(line.strip()) for line in file]
max_score = max(scores)
min_score = min(scores)
average_score = sum(scores) / len(scores)
max_score = round(max_score)
min_score = round(min_score)
average_score = round(average_score)
return max_score, min_score, average_score
file_name = 'yzy.txt'
max_score, min_score, average_score = calculate_grades(file_name)
print(f"最高分: {max_score}")
print(f"最低分: {min_score}")
print(f"平均分: {average_score}")
代码
import os
os.listdir('home/DAN/Theano0.9/')
得到的结果如下,可以看到同时获得到了一个文件夹下面的所有文件夹和文件。
我可以解决该问题。
代码如下:
with open('grade.txt', 'r') as f: lines = f.readlines() scores = [int(x.strip()) for x in lines]
max_score = max(scores) min_score = min(scores) avg_score = round(sum(scores) / len(scores))
print(f'最高分为:{max_score}') print(f'最低分为:{min_score}') print(f'平均分为:{avg_score}')
解释: 1. 首先使用 open 函数读取 grade.txt 文件,以读取模式打开。 2. 使用 readlines 方法将每行内容读取到一个列表中,去掉每行末尾的换行符,转换为整数类型,存入 scores 列表中。 3. 使用 max 函数求 scores 列表中的最大值,使用 min 函数求 scores 列表中的最小值,使用 sum 函数求 scores 列表中所有元素的总和并除以元素个数求平均值,使用 round 函数对结果进行四舍五入处理。 4. 使用 print 函数输出统计结果。
注意事项: 1. 文件路径要正确。 2. grade.txt 文件中的每个分数必须独占一行,且是整数形式,否则将无法正确计算。 3. 代码中没有进行错误处理,如文件读取异常等,需要自行添加适当的错误处理代码。