我需要在 StudentInfo.tsv 中获取此信息:
Barrett Edan 70 45 59
Bradshaw Reagan 96 97 88
Charlton Caius 73 94 80
Mayo Tyrese 88 61 36
Stern Brenda 90 86 45
并使其输出到另一个文件,如下所示:
Barrett Edan 70 45 59 F
Bradshaw Reagan 96 97 88 A
Charlton Caius 73 94 80 B
Mayo Tyrese 88 61 36 D
Stern Brenda 90 86 45 C
Averages: midterm1 83.40, midterm2 76.60, final 61.60
这就是我重写学生信息并添加字母成绩的情况。然而,for 循环并没有按照我需要的方式运行。
我得到的输出是'[]'
import csv
def calculate_grade(average_score):
if average_score >= 90:
return 'A'
elif 80 <= average_score < 90:
return 'B'
elif 70 <= average_score < 80:
return 'C'
elif 60 <= average_score < 70:
return 'D'
else:
return 'F'
tsv_input = str(input())
student_data = []
with open(tsv_input) as file_a:
tsv_read = file_a.readlines()
for row in tsv_read:
student_data = [row.strip().split('\t')]
with open('report.txt', 'a+') as final_file:
for info in student_data:
last_name, first_name, midterm1, midterm2, final = info
average_score = (float(midterm1) + float(midterm2) + float(final)) / 3
final_grade = calculate_grade(average_score)
final_file.write(f'{last_name}\t{first_name}\t{midterm1}\t{midterm2}\t{final}\{final_grade}\n')
final_read = final_file.readlines()
print(final_read)
更改线路:
student_data = [row.strip().split('\t')]
至:
student_data.append(row.strip().split("\t"))
您不想将
student_data
分配给新的内容,而是向其附加分割线。