有没有办法循环列表并将所有内容转换为整数?

reg*_*ard 1 python python-3.x

我正在编写一个程序来计算成绩列表中的平均值,并将其与学生的名字一起打印出来,但是当我尝试将所有成绩加总并将它们除以时,我会得到一个类型错误.名单.这就是我所拥有的:

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()
Run Code Online (Sandbox Code Playgroud)

这是文件的内容:

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
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误消息:

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'
Run Code Online (Sandbox Code Playgroud)

是否可以grades使用列表遍历将所有内容转换为整数或者我是否还要写几行?

Ósc*_*pez 6

问题是你将数字作为字符串读取,你必须int在添加它们之前将它们转换为s:

grades = [int(x) for x in info[1:]]
average = sum(grades) / len(grades)
Run Code Online (Sandbox Code Playgroud)