2.7.x
rate = raw_input('Rating: ')
你如何保存每个号码并最终获得平均值? 在那行代码之前,它是:
for i in range(n):
非常感谢。
编辑:
在调整代码后,我得到了这个:
L = []
for i in range(n):
line = raw_input('Next Track: ')
m = L.append(raw_input('Rating: '))
overall = sum(map(int, L)) / len(L)
f.write("Track Name: " + line + " - Rating: " + str(m) + "\n")
f.close()
f = open('music.txt','a')
print "Overall Rating: ", overall
f = open("music.txt", 'a')
f.write("Overall Rating: " + str(overall) + "\n")
f.write("---------------------------\n")
f.close
现在,问题是,每当我输入一个评级数字时,它就会在文件中显示为“无”。为什么呢?
答案 0 :(得分:2)
将值附加到列表中:
L = []
for i in range(n):
L.append(raw_input('Rating: '))
然后,您可以获得列表的平均值:
sum(map(int, L)) / len(l)
或者,您可以使用列表解析:
L = [int(raw_input('Rating: ')) for _ in range(n)]
sum(L) / len(L)
但是,如果您正在处理花车,那么使用它来获得平均值:
from __future__ import division
sum(L) / len(L)
from __future__ import division
将/
更改为真正的除法运算符。真正的除法在python 3中是活跃的,但是当你在python 2.7上时,你可以直接导入它。
使用您的代码,存在一些问题:
L.append(raw_input('Rating: '))
返回None
。您无需将其分配给变量,因此请删除m =
。
但是,您似乎希望保留m
的值,以便将其写入文件中。然后你可以做类似的事情:
m = raw_input("Rating: ")
L.append(m)
也不需要str(m)
,因为raw_input()
会返回一个字符串。
最后,在打开文件时应该使用with
语句。这样可以节省调用close()
:
with open('music.txt','a') as f:
for i in range(n):
line = raw_input('Next Track: ')
m = raw_input("Rating: ")
L.append(m)
overall = sum(map(int, L)) / len(L)
f.write("Track Name: " + line + " - Rating: " + m + "\n")
答案 1 :(得分:0)
您也可以使用moving average一次完成此操作:
>>> avg = 0.0
>>> for i in range(3):
avg = (avg * i + float(raw_input('Rating: '))) / (i + 1)
Rating: 3
Rating: 5
Rating: 7
>>> avg
5.0
但是,如果您还不知道n
等于什么,这只会很有用,在您的情况下我会这样做:
>>> avg, n = 0.0, 3
>>> for i in range(n):
avg += float(raw_input('Rating: '))
Rating: 3
Rating: 5
Rating: 7
>>> avg /= n
>>> avg
5.0