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 中获得此行为
我有一个 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
.