我正在编写一个程序,该程序可以计算一系列成绩的平均值并将其与学生的姓名一起打印出来,但是当我尝试对所有成绩进行求和并将其除以长度时,却遇到类型错误清单。这就是我所拥有的:
def average_grade(afile):
aline = afile.readline()
grades = []
while aline:
info = aline.split()
grades = info[1:]
average = sum(grades) / len(grades)
print(info[0],average)
aline = afile.readline()
my_file = open('studentdata.txt','r')
average_grade(my_file)
my_file.close()
这是文件的内容:
joe 10 15 20 30 40
bill 23 16 19 22
sue 8 22 17 14 32 17 24 21 2 9 11 17
grace 12 28 21 45 26 10
john 14 32 25 16 89
这是我收到的错误消息:
Traceback (most recent call last):
File "averagegrade.py", line 13, in <module>
average_grade(my_file)
File "averagegrade.py", line 7, in average_grade
average = sum(grades) / len(grades)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
是否可以grades
使用列表遍历将所有内容转换为整数,或者我还要多写几行?
问题在于您正在将数字读取为字符串,必须在将它们转换为int
s之前添加它们:
grades = [int(x) for x in info[1:]]
average = sum(grades) / len(grades)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句