zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python中除法使用的注意事项

Python 使用 注意事项 除法
2023-06-13 09:15:43 时间

本文实例讲解了Python中除法使用的注意事项,是非常重要的技巧,对于Python程序设计来说有很好的借鉴价值。具体分析如下:

现来看如下示例:

defavg(first,*rest):
return(first+sum(rest))/(1+len(rest))
#Sampleuse
avg(1,2)#1.5
avg(1,2,3,4)#2.5

源程序只是为了演示变长参数的使用,不过Python2.7.1的解释器里,我得到的结果却和注释的结果不一样

>>>defavg(first,*rest):
...return(first+sum(rest))/(1+len(rest))
...
>>>avg(1,2)
1
>>>avg(1,2,3,4)
2

可以很明显的看到,小数点后的数据被截断了,我记得两个整数相除,"//"应该才是取整,难道我记错了?

>>>defavg(first,*rest):
...return(first+sum(rest))//(1+len(rest))#change"/"to"//"
...
>>>avg(1,2)
1
>>>avg(1,2,3,4)
2

将“/”改成了“//”,得到的结果是一样的,“//”的确是取整这一点我是没记错,不过为什么“/”的结果也是截断了的?

同样的程序我在3.4.1的解释器里面做了测试,得到了预想的结果:

>>>defavg(first,*rest):
...return(first+sum(rest))/(1+len(rest))
...
>>>avg(1,2)
1.5
>>>avg(1,2,3,4)
2.5
>>>defavg(first,*rest):
...return(first+sum(rest))//(1+len(rest))#change"/"to"//"
...
>>>avg(1,2)
1
>>>avg(1,2,3,4)
2

可以看到在3.4.1的解释器里,“/”的结果保留了小数位,而“//”则是取整后的结果

搜索之后,找到了stackoverflow上的这个问题:Python里如何强制除法的结果为浮点数?注意这个是针对2.x的版本,3.x里面并不存在这样的问题
答案的前两个解决方案,都很不错:

方法1:

>>>from__future__importdivision
>>>a=4
>>>b=6
>>>c=a/b
>>>c
0.66666666666666663

方法2:

类似于C语言里面的做法:

c=a/float(b)

相信本文所述实例会对大家的Python程序设计有一定的帮助。