我有点厌倦了用Python做的练习。我有一个包含几行的文件,每行都有一个名称和值。 在本练习中,我需要计算所述值的平均值。我遇到的问题是创建可行的变量,仅为名称分隔和创建列表或字符串,并且值相同。
一旦完成,只需要将值列表中值的总和除以名称的len,我会假设。
到目前为止,我只是得到了:
f = open("shopping.txt", "r")
for i in f:
t = i.split()
print t
我得到了这个输出:
['TV', '300']
['Radio', '20']
['computer', '500']
['Smartphone', '400']
有什么建议吗?
答案 0 :(得分:1)
cart = {}
combined = 0
with open('shopping.txt', 'r') as fh:
for line in fh:
if len(line) <= 0 or not '=' in line: continue
key, val = line.split('=',1)
cart[key] = int(val)
combined += int(val)
上面的代码可以让你知道一个操作循环中的联合值,而不是总结:稍后的东西,它还可以让你在你的砧板中使用各个项目,如下所示:
print(cart['Radio'])
因此仅显示无线电的值
答案 1 :(得分:1)
到目前为止看起来不错。应用.split()
后,您需要使用int
将列表元素转换为values = [ int(x) for x in t ]
,然后您可以使用sum(values)
对元素求和,并除以列表使用len(values)
。
编辑:
在您进行修改后,我建议您只使用每行中的第二个值:t[1]
,将它们加起来:sum = 0
最初,i。即在循环之前,然后在循环中:sum += t[1]
,并在循环之后将该总和除以所使用的行数(因此您应该使用相同的技术计算行,即count = 0
最初然后{ {1}}在每次循环迭代中。
答案 2 :(得分:0)
假设您的文件具有以下格式:
#file
name1 value1
name2 value2
...
namen value2
您可以通过以下方式计算平均值:
with open('/path/to/file', 'r') as f:
values = [int(line.strip().split()[1]) for line in f]
print 'mean:', float(sum(values)) / len(values)
答案 3 :(得分:0)
这个怎么样?
with open("shopping.txt") as file: # same as 'file = open("shopping.txt")'
data = file.read().splitlines()
shopping = {k:int(v) for k, v in [line.split("=") for line in data]}
file.close()
print shopping
修改强> 找到总和:
print sum(shopping.values())