Skip to main content
 首页 » 编程设计

python之有没有办法遍历列表并将所有内容转换为整数

2025年05月04日11linjiqin

我正在编写一个程序来计算成绩列表的平均值并将其与学生姓名一起打印出来,但是当我尝试对所有成绩求和并将它们除以列表的长度。这是我的:

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:

grades = [int(x) for x in info[1:]] 
average = sum(grades) / len(grades)