我有一个python(2.7)脚本,它读取包含如下文本设置的输入文件:
steve 83 67 77
脚本平均每个名称对应的数字,并返回每个名称的列表,其中包含人名和平均值,例如返回输出如下所示:
steve 75
然而,“史蒂夫”的实际平均值是“75.66666667”。因此,我希望返回值为76,而不是75(也就是我希望它舍入到最接近的整数)。我不知道如何完成这件事......这是我的代码:
filename = raw_input('Enter a filename: ')
file=open(filename,"r")
line = file.readline()
students=[]
while line != "":
splitedline=line.split(" ")
average=0
for i in range(len(splitedline)-1) :
average+=int(splitedline[i+1])
average=average/(len(splitedline)-1)
students.append([splitedline[0],average])
line = file.readline()
for v in students:
print " ".join(map(str, v))
file.close()
答案 0 :(得分:0)
虽然您的代码非常混乱并且应该整体改进,但问题的解决方案应该很简单:
average=average/(len(splitedline)-1)
应该是:
average /= float(len(splitedline) - 1)
average = int(round(average))
默认情况下,Python 2.x /
有两个整数地板划分。您必须明确地将其中一个参数设置为浮点数才能获得实际除法。然后你必须对结果进行舍入并将其转回整数。
在Python 3中,地板划分为//
,常规划分为/
。您可以使用from __future__ import division
在Python 2中获得此行为。