这是我的第一篇文章。我有一个询问学生人数的功能。然后,对于每个学生,前三行包含以下信息:学生 ID、姓名和该学期修读的课程数量。现在,对于每门课程,都会列出课程编号、学分和学生获得的分数百分比。
def rawdata():
semester = 1
if semester == 1:
raw_file = open('raw_data.txt', 'a')
total = 0.0
total2 = 0.0
num_students = int(input('Enter number of students: '))
for student in range(num_students):
raw_file.write('Start' + '\n')
student_id = input('Enter student ID: ')
name = input('Enter Name: ')
num_classes = int(input('Enter number of courses taken: '))
raw_file.write(student_id + '\n')
raw_file.write(name + '\n')
raw_file.write(str(num_classes) + '\n')
for classes in range(num_classes):
course_number = input('Enter Course Number: ')
credits = int(input('Enter Credit Hours: '))
GPA1 = float(input('Enter percentage grade for class: '))
raw_file.write(course_number + '\n')
raw_file.write(str(credits) + '\n')
raw_file.write(str(GPA1) + '\n')
total += credits
raw_file.write('End' + '\n')
raw_file.close()
print('Data has been written')
所有数据都列在一个 txt 文件中,现在我需要从我的 raw_data.txt 中提取这些信息,如下所示(因输入而异):
Start
eh2727
Josh D
2
MAT3000
4
95.0
COM3000
4
90.0
End
Start
ah2718
Mary J
1
ENG3010
4
100.0
End
并对其进行处理,以便我可以计算每个学生的 GPA。我让每个学生的信息块都包含在开始/结束中,我不知道如何在我的处理函数中读取这些信息以便计算他们的 GPA。这是我到目前为止所拥有的:
def process():
data = open('raw_data.txt', 'r')
results = open('process_results.txt', 'w')
buffer = []
for line in data:
if line.startswith('Start'):
buffer = []
buffer.append(line)
if line.startswith("End"):
for outline in buffer:
results.write(outline)
这只是将其全部写入我的结果文本,我不知道如何单独处理每个信息块来计算 GPA。任何帮助将不胜感激。