Python中除法使用的注意事项

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

现来看如下示例:

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

登录后复制

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

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

登录后复制

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

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

登录后复制

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

立即学习“Python免费学习笔记(深入)”;

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

>>> def avg(first, *rest): ...   return (first + sum(rest)) / (1 + len(rest)) ...  >>> avg(1, 2) 1.5 >>> avg(1, 2, 3, 4) 2.5 >>> def avg(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__ import division >>> a = 4 >>> b = 6 >>> c = a / b >>> c 0.66666666666666663 

登录后复制

方法2:

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

c = a / float(b)

登录后复制

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2290683.html

(0)
上一篇 2025年2月28日 00:29:05
下一篇 2025年2月28日 00:29:21

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论