为什么For循环只迭代一次?

问题描述 投票:0回答:1

我需要在 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)
python for-loop
1个回答
0
投票

更改线路:

student_data = [row.strip().split('\t')]

至:

student_data.append(row.strip().split("\t"))

您不想将

student_data
分配给新的内容,而是向其附加分割线。

© www.soinside.com 2019 - 2024. All rights reserved.