Python 列表中整数的舍入错误(列表包含整数和字符串)

Python rounding error for ints in a list (list contains ints and strings)

我有一个 python (2.7) 脚本可以读取包含如下文本设置的输入文件:

steve 83 67 77

脚本对每个名字对应的数字进行平均,return为每个名字创建一个列表,其中包含人名和平均值,例如 return 输出如下所示:

steve 75

然而,"steve" 的实际平均值是“75.66666667”。因此,我希望 return 值为 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()

虽然你的代码很乱,整体上应该有所改进,但你的问题的解决方法应该很简单:

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 中获得此行为