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使用bs4获取58同城城市分类的方法
Jul 08 Python
详解Python3中的Sequence type的使用
Aug 01 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
浅谈Pytorch torch.optim优化器个性化的使用
Feb 20 Python
python 伯努利分布详解
Feb 25 Python
Python requests模块session代码实例
Apr 14 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
通过代码实例解析Pytest运行流程
Aug 20 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
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
PHP中overload与override的区别
2017/02/13 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
javascript实现动态标签云
2015/10/16 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
python如何基于redis实现ip代理池
2020/01/17 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
印尼购物网站:iLOTTE
2019/10/16 全球购物
罗技美国官网:Logitech美国
2020/01/22 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
《孔繁森》教学反思
2014/04/17 职场文书
见习报告的格式
2014/11/04 职场文书
公司保密管理制度
2015/08/04 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书