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("-")))