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基础教程之udp端口扫描
Feb 10 Python
在Python的Flask框架中实现单元测试的教程
Apr 20 Python
Python面向对象编程中关于类和方法的学习笔记
Jun 30 Python
python实现多层感知器
Jan 18 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
python hashlib加密实现代码
Oct 17 Python
python面向对象之类属性和类方法案例分析
Dec 30 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
举例讲解Python装饰器
Dec 24 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 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类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
手机业务员岗位职责
2013/12/13 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
单位实习证明怎么写
2014/01/17 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
成人成长感言如何写?
2019/08/16 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
Feign调用全局异常处理解决方案
2021/06/24 Java/Android
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android
Android存储中最基本的文件存储方式
2022/04/30 Java/Android