想要平均,不能因为字符串而加数字。Int 不起作用。无能


input = "5-9-7-1-7-8-3-2-4-8-7-9"  
word = input.split("-")  
average = sum(int(word)) / len(int(word))
print(average)

因此,split 命令给出了一个字符串列表,我无法按照我想要的方式对字符串求和(作为数字,以找到平均值)。我在SO上搜索了答案,每个人都说要使它们成为整数,但没有一个答案有效。

我得到的错误消息是:"TypeError:int() 参数必须是字符串、类似字节的对象或数字,而不是'列表'"

例如,另一个主题中的某人建议newvar = [int(s) for s in newvar]但我似乎无法使其工作。

提前感谢!

致投反对票的人:介意告诉我为什么,以便我可以改进它吗?我知道网站上总是有烦人的新手已经存在了一段时间,他们不断犯同样的愚蠢错误,但我还不知道这里的社交代码。

首先,split 会给你一个字符串列表。

所以你必须把每个元素变成一个数字

该建议是直截了当的,但您需要使其适应您的代码。

input = "5-9-7-1-7-8-3-2-4-8-7-9"  
words = input.split("-")  
average = sum([int(s) for s in words]) / len(words)  
print(average)

您应该将每个项目单独转换为一个数字。您可以使用列表理解。

input = "1-3-5-7-2-4-6-8"
strings = input.split("-")                # strings = ["1", "3", "5", "7", "2", "4", "6", "8"]
numbers = [int(item) for item in strings] # numbers = [ 1,   3,   5,   7,   2,   4,   6,   8]
average = sum(numbers) / len(numbers)

你可以试试这个:

input = "5-9-7-1-7-8-3-2-4-8-7-9"  
average = sum(map(int, input.split("-")))/float(len(input.split("-")))

最新更新