在python中无法在平均计算中成功转换为int / float

时间:2016-04-15 08:07:08

标签: python input average

这是我的代码,没有最后一部分它会分割名称和分数。我试图通过使用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)

3 个答案:

答案 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' 

您的代码中没有任何地方使用+,因此我假设您将其删除了。问题是您正在尝试添加intstr(字符串),并且Python不知道您是要添加两个值还是连接两个字符串。通过将一个转换为与另一个相同的类型来解决此问题。如果aintbstr

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]))