python - 如何计算文本文件中班级成员的平均分?
问题描述
对于我的初学者课程 python,我得到了以下任务:
在输入文件中,列出了第 2b 组地理测试的成绩。已经进行了三项测试,其中的成绩将包含在圣诞节假期前发给学生的半年度报告中。在输入的每一行中,您都可以找到学生的姓名,后跟一个或多个分数('_')。这些是通过测试的成绩来完成的,例如:
Anne Adema____________6.5 5.5 4.5
Bea de Bruin__________6.7 7.2 7.7
Chris Cohen___________6.8 7.8 7.3
Dirk Dirksen__________1.0 5.0 7.7
可能的最低成绩是 1,最高成绩是 10。如果有人错过了考试,列表中的成绩是 1。你的任务是为 2b 组的地理课程做报告,应该如下所示:
Report for group 2b
Anne Adema has an average grade of 5.5
Bea de Bruin has an average grade of 7.2
Chris Cohen has an average grade of 7.3
Dirk Dirksen has an average grade of 4.6
End of report
到目前为止,这是我的 python 代码:
NUMBER_OF_GRADES = 3
file =open('grades1.in.txt').read().split('\n')
for scores in file:
name_numbers = (scores.split('_'))
def averages ():
for numbers in file:
sum=0
numbers = split("\n")
for num in numbers:
sum = sum + int(num)
averages = sum/NUMBER_OF_GRADES
print ('% has an average grade of %.1') %(name, averages)
它哪里出错了?我错过了什么?我分裂的方式不对吗?
解决方案
首先,您根本没有调用您的函数averages
。您应该将其添加为代码的最后一行,但您根本不需要函数定义。
- 使用
with
-statement 打开和自动关闭文件。 - 接下来,您可以使用该
re
包在下划线处拆分行。 - 您必须拆分成绩列表(假设它们用空格分隔)
- 您可以使用内置函数
sum
并len
计算总和和等级数。
最后,它可能看起来像这样
import re
with open('grades1.in.txt') as grades_file:
for line in grades_file:
name, grades = re.split("_+", line)
grades = [float(k) for k in grades.split()]
avg = sum(grades)/len(grades)
print("{} has an average grade of {:.2f}.".format(name, avg))
推荐阅读
- android - Android 5 肖像应用程序在转到最近和旋转时崩溃
- javascript - 如何在 discord.js 中检测 enmap 中的属性值?
- javascript - 无法将 nonce 属性应用于我的内联 css
- django - 将两个表的特定列数据显示到一个列表中?
- reactjs - 提交成功后关闭表单模式
- amazon-web-services - 从端点获取 JSON 文件并将它们保存到 AWS S3
- python - For 循环迭代 - Pyomo 表达式中的语法错误
- excel - 在 Excel VBA 用户窗体内的页面文本框中添加动态占位符
- python - 检查列表中的文本是否带有字符串
- python-3.x - 如何修改TIF文件的EXIF数据