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通过装饰器检查函数参数数据类型的方法
Mar 13 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
python3中获取文件当前绝对路径的两种方法
Apr 26 Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
浅谈ROC曲线的最佳阈值如何选取
Feb 28 Python
python等待10秒执行下一命令的方法
Jul 19 Python
Python基础之元编程知识总结
May 23 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
3种平台下安装php4经验点滴
2006/10/09 PHP
构建简单的Webmail系统
2006/10/09 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
php实现购物车功能(下)
2016/01/05 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
Python编程中对文件和存储器的读写示例
2016/01/25 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
容易被忽略的Python内置类型
2020/09/03 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
铭立家具面试题
2012/12/06 面试题
文史专业毕业生自荐信
2013/11/17 职场文书
企划专员岗位职责
2013/12/09 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
委托培训协议书
2014/11/17 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书