【发布时间】:2015-07-13 05:59:53
【问题描述】:
我是 Python 新手,我正在尝试弄清楚如何从源文件中显示不同的内容。任务是编写一个程序,让用户输入包含数学课测试答案(A、B、C 或 D)的文件的名称,然后打开该文件,我相信我已经在下面完成了。每个文件的行数不同,因为每个班级有不同数量的学生。每行包含一个学生的 ID 号和他们为测试提供的答案,以逗号分隔。示例:
"N12345678,B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D"
然后程序应该通过比较每个学生的答案与答案键来“评分”测试,即
"B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D"
程序还应确定并打印出文本文件中所有学生的最高分、最低分以及分数的平均值、中位数、众数和范围。
我已经编写了用于打开文件并计算学生人数的部分,但我一直在尝试编写对每个学生的答案进行评分的部分,但未能成功。这是我到目前为止所拥有的:
file_name = input("Enter a class file to grade (class1.txt, class2.txt, etc): ")
try:
outfile = open(file_name, 'r')
print("Successfuly opened",file_name)
print()
except:
print("File does not exist.")
student_counter = 0
for line in outfile:
data = (line.rstrip('\n'))
print(data)
student_counter = student_counter + 1
print(student_counter)
以下是我尝试为每个学生的答案评分的方法,但它似乎不起作用。每答对一题得4分,每答错一题扣1分,每题留空计0分。:
answers = ["B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D"]
total = 1
counter = 1
for line in outfile:
student_counter = student_counter + 1
text_line = line.split(',')
if (text_line[counter] == answers[counter-1]):
total = total+4
elif text_line[counter] == ' ':
total = total
counter = counter +1
else:
total = total-1
print(total)
如何编辑我的程序以遍历输入文件中的每一行并显示最高分、最低分、中位数、众数和范围?
【问题讨论】:
标签: python file loops iteration