Python 保存用户输入的数字并获得平均值
2.7.x 你会如何保存每个数字并最终得到平均值? 在那行代码之前,它是:Python 保存用户输入的数字并获得平均值,python,user-input,Python,User Input,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(
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
然后,您可以得到列表的平均值:
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)
来自未来导入除法
将/
更改为真正的除法运算符。True division在Python3中是活动的,但正如在Python2.7中一样,您可以直接导入它
您的代码存在一些问题:
L.append(原始输入('Rating:'))
返回None
。您不需要将其分配给变量,所以请去掉m=
但是,您似乎希望保留m
的值,以便将其写入文件中。然后,您可以执行以下操作:
from __future__ import division
sum(L) / len(L)
由于raw\u input()
返回字符串,因此也不需要使用str(m)
最后,在打开文件时,应该使用
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")
但这只有在您还不知道n
等于什么的情况下才有用,在您的情况下,我会这样做:
>>> 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
list.append
返回None
,不要尝试保存结果非常感谢,你帮我省去了很多挫折:P@BrianFuller没问题:)。还有,很抱歉回答得有点长lol:p
>>> 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
>>> 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