在python中求和数组的浮点元素是否会在答案的末尾添加垃圾值?

在python中求和数组的浮点元素是否会在答案的末尾添加垃圾值?,python,arrays,Python,Arrays,我的代码是: import array as arr print("\t\t\tEnter Marks of the following subjects out of 100 :\n") marks = arr.array('f') for x in range(5): marks.append(float(input("Enter marks of {0} subject : ".format(x+1)))) else: print("Calculating...

我的代码是:

import array as arr

print("\t\t\tEnter Marks of the following subjects out of 100 :\n")

marks = arr.array('f') 


for x in range(5):
    marks.append(float(input("Enter marks of {0} subject : ".format(x+1))))

else:
    print("Calculating...")

sum = float(0.0)
for x in marks:
    sum += x

print("Total Marks (Out Of 500) = ",sum)

我不知道您是否需要使用
数组
库,但我看不出它在这里有什么用处。你想用它来提高效率吗?如果是这种情况,请参见python中的第2节,您可以将变量的值设置为空的
列表
,以便在代码中进一步使用它。例如:


l=[]
对于范围(3)中的i:
l、 附加(i)
打印(l)#打印[0,1,2]
因此,在您的情况下,您可以这样做:

1)

print(“\t\t\t在100个主题中标记以下主题:\n”)
分数=[]
对于范围(5)内的x:
marks.append(float(输入({0}主题的标记:“.format(x+1))))
打印(“计算…”)
总和=0
对于标记中的标记:
sum+=x#如果x在任何循环中都是一个浮点数,那么sum将是一个浮点数。
打印(“总分(500分中)=”,总和)
或者,如果需要使用
阵列
软件包:

2)

导入数组
marks=array.array(“f”)
对于范围(5)中的i:
marks.append(float(输入({0}主题的标记:“.format(i+1)))
总和=0
对于标记中的标记:
总和+=马克
打印(“总分(共500分)=”,浮点(总和))#打印总和的浮点值

这似乎不需要那么高效,而且通过使用
数组
库,您可能不会更快地获得程序。使用
timeit
模块查看哪个程序运行得更快

import timeit
timeit.timeit(stmt=“”导入数组
in_分数=[80,80.2,80,80,80]
marks=array.array(“f”)
对于范围(5)中的i:
marks.append(float(in_marks[i]))
总和=0
对于标记中的标记:
总和+=马克
#打印(“总分(共500分)=”,浮点(总和))#打印总和“”的浮点值,数字=1000000)
#这花费了1.79645879999821秒来运行1.000.000次
#和0.1905790000007066运行100.000次
这是没有图书馆的:

import timeit
timeit.timeit(stmt=”“”
in_分数=[80,80.2,80,80,80]
分数=[]
对于范围(5)中的i:
marks.append(float(in_marks[i]))
总和=0
对于标记中的标记:
总和+=马克
#打印(“总分(共500分)=”,浮点(总和))#打印总和“”的浮点值,数字=100000)
#这花费了1.271052900000086秒来运行1.000.000次
#和0.128185799998292秒运行100.000次
Python似乎没有它会更快,因为程序不会进行任何繁重的计算,所以通过导入库,您会损失一些时间,但从长远来看不会获得任何好处



要删除代码中的结束数字,可以
round()
将浮点数设置为2个小数点,如@Laurent Bristiel建议的那样。

这是因为浮点数不是精确的值。所以,当你把它们加起来时,你通常会得到,00001或,…999。解决这个问题的一个方法是将最终结果四舍五入。例如:

print("Total Marks (Out Of 500) = ", round(sum,2))

您可以检查这一点,这应该会有所帮助。

另外:您使用的是单精度浮点(类型代码
'f'
)。标准的python
float
是双精度的,基本上所有东西都应该使用它(在
arr.array
中使用类型code
'd'