我的代码应该读取一个csv文件,并返回字典列表的信息。然而,它不起作用。
import csv
def read_csv(fname):
stu_list = []
try:
with open(fname, 'r') as students:
reader = (csv.reader(students))
for row in reader:
avg = sum(float(grade) for grade in row[2:]) / 10
rounded_avg = round(avg, 3)
student_info = {'name': row[0], 'section':row[1], 'scores':[grade for grade in row[2:]], 'average':rounded_avg}
stu_list.append(student_info)
if len(stu_list) == 0:
return None
print(stu_list)
except:
print(f"Error occurred when opening {fname} to read")
return None
字符串
2条答案
按热度按时间mzmfm0qo1#
基本上你需要做的就是返回
stu_list
。字符串
与
型
然后把指纹放在通话地点
型
我个人认为
return None
的东西有点不像Python,因为它中断了快乐路径的流动(在那里没有错误)。我会允许异常传播给用户,让他们决定如何处理它们。一些更新的代码
型
y3bcpkx12#
几点观察:
1.当学生列表不为空时,我没有看到任何返回它的语句。这就是为什么你得到
None
。为了解决这个问题,在你print(stu_list)
的地方,返回stu_list
。1.不要使用裸
except
,也就是没有任何特定错误的except
。这种做法是危险的,因为它会隐藏严重的错误,使调试非常困难。在这种情况下,我建议使用FileNotFoundError
。更好的是,我根本不会使用try/except,让调用者处理错误。1.在计算平均值时,我使用
statistics.mean
而不是硬编码10
作为等级数。代码:
字符串