Python typeerror/'str'和'int'不支持的操作数类型

Python typeerror/'str'和'int'不支持的操作数类型,python,Python,我试图从一个列表中找出三个数字的平均分数,如下所示: a = (lines.split(":")[1].split(",")[-3:]) Print (a) Averagescore = sum(a)/len(a) Print (averagescore) 然后它说: typeerror不支持/'str'和'int'的操作数类型我怀疑您描述的错误消息对于这段代码可能不准确,但问题是您试图将字符串列表视为int列表。比如说 >>> s = "1 16 32" # string

我试图从一个列表中找出三个数字的平均分数,如下所示:

a = (lines.split(":")[1].split(",")[-3:])
Print (a)
Averagescore = sum(a)/len(a)
Print (averagescore)
然后它说:
typeerror不支持/'str'和'int'的操作数类型我怀疑您描述的错误消息对于这段代码可能不准确,但问题是您试图将字符串列表视为int列表。比如说

>>> s = "1 16 32" # string
>>> s.split() # this returns a list of strings
['1', '16', '32']
>>> s.split()[0] + 1 # you can't add an int to a string
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly

错误信息非常清楚。没有打印,只有打印。你能至少告诉我问题出在哪里吗?你需要把a中的字符串转换成数字,以便对它们进行算术运算。我不知道它是怎么做到的,如果a是一个空列表,那么我认为sum不会引发TypeError错误的唯一方法就是如果a是一个空列表。非常感谢,之所以让我感到困惑,是因为我能够从中提取整数的最高分数。谢谢你,非常感谢appreciated@NickCollins:您确定您的最高分数提取工作正常吗?请注意在字符串形式的数字上使用max或min-如果数字字符串的位数不都相同,那么结果将不会是您期望的结果,因为,例如,“10”<“2”。是的,我知道这一点,我想这是因为它的结尾有key=intit@NickCollins:啊,好的。是的,提供int作为max或sort的关键函数将得到正确的结果。但在这种情况下,最好将整个列表转换为int,然后找到这些int的最大值,因为您需要将整个列表作为int来找到平均值。因此,告诉max使用int-key函数有点浪费,因为它基本上是制作一个int的私有列表,这样它就可以找到最大值,然后扔掉这个私有列表。
a = [int(n) for n in s.split()]
a = [float(n) for n in s.split()] # alternatively