这是我的代码,没有最后一部分它会分割名称和分数。我试图通过使用sum / len来计算平均值。我需要将得分转换为浮动某处,每当我尝试时,我都会收到以下消息:
for name in sorted(user_scores):
# get the highest score in the list.
average = sum(user_scores[name])/len[name]
print(name, average)
答案 0 :(得分:1)
您的平均计算错误。它应该是
Point
(可能这是某种复制粘贴错误。使用average = sum(user_scores[name]) / len(user_scores[name])
您使用len[name]
作为name
的索引,而不是len
参数(因此not subscriptable
错误),并且使用len(name)
,您将除以名称中的字符数。)
答案 1 :(得分:0)
消息
TypeError: unsupported operand type(s) for +: 'int' and 'str'
您的代码中没有任何地方使用+
,因此我假设您将其删除了。问题是您正在尝试添加int
和str
(字符串),并且Python不知道您是要添加两个值还是连接两个字符串。通过将一个转换为与另一个相同的类型来解决此问题。如果a
是int
而b
是str
:
a + int(b)
或
str(a) + b
消息:
TypeError: 'builtin_function_or_method' object is not subscriptable
这是来自:
len[name]
len
是一个函数,要调用函数,必须使用括号,而不是方括号。
len(name)
然而,正如@tobias_k所述,无论如何,平均值的计算是错误的,
答案 2 :(得分:0)
@tobias_k和@cdarke所说的不仅仅是正确的。另外,虽然他们的答案是,你需要对分子或分母进行类型转换以获得浮点结果: 例如。 average = sum(user_scores [name])/ float(len(user_scores [name]))