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判断字符串是否纯数字的方法
Nov 19 Python
Python多进程机制实例详解
Jul 02 Python
Python 3.x读写csv文件中数字的方法示例
Aug 29 Python
python简单实例训练(21~30)
Nov 15 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
python读取各种文件数据方法解析
Dec 29 Python
pycharm修改file type方式
Nov 19 Python
python实现坦克大战
Apr 24 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 Python
PyChon中关于Jekins的详细安装(推荐)
Dec 28 Python
Python如何使用循环结构和分支结构
Apr 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 代码规范小结
2012/03/08 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
JS 继承实例分析
2008/11/04 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
有趣的python小程序分享
2017/12/05 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
python爬虫超时的处理的实例
2018/12/19 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
django 环境变量配置过程详解
2019/08/06 Python
python自动发微信监控报警
2019/09/06 Python
关于python中的xpath解析定位
2020/03/06 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
品牌推广活动策划方案
2014/08/19 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
不同意离婚代理词
2015/05/23 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang