Python中除法使用的注意事项


Posted in Python onAugust 21, 2014

本文实例讲解了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

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

同样的程序我在 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程序设计有一定的帮助。

Python 相关文章推荐
python实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
Django中对数据查询结果进行排序的方法
Jul 17 Python
Python实时获取cmd的输出
Dec 13 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
离线安装Pyecharts的步骤以及依赖包流程
Apr 23 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
Jun 04 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 Python
python爬虫用scrapy获取影片的实例分析
Nov 23 Python
Python 获取异常(Exception)信息的几种方法
Dec 29 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
python基础入门之普通操作与函数(三)
Jun 13 Python
Python中dictionary items()系列函数的用法实例
Aug 21 #Python
Python 不同对象比较大小示例探讨
Aug 21 #Python
python字符串连接方式汇总
Aug 21 #Python
零基础学Python(一)Python环境安装
Aug 20 #Python
Python中replace方法实例分析
Aug 20 #Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 #Python
Python中列表(list)操作方法汇总
Aug 18 #Python
You might like
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
如何提高数据访问速度
2016/12/26 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
React中的refs的使用教程
2018/02/13 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
vue动态子组件的两种实现方式
2019/09/01 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
详解JS预解析原理
2020/06/16 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
利用python实现AR教程
2019/11/20 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
Ajax的工作原理
2015/12/04 面试题
优秀教育工作者事迹材料
2014/12/24 职场文书
公司2015年终工作总结
2015/05/26 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
800字作文之大雪
2019/12/04 职场文书
解决vue中provide inject的响应式监听
2022/04/19 Vue.js