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实现统计英文单词个数及字符串分割代码
May 28 Python
Python脚本实现虾米网签到功能
Apr 12 Python
python二分查找算法的递归实现方法
May 12 Python
Python实现的自定义多线程多进程类示例
Mar 23 Python
django静态文件加载的方法
May 20 Python
对python中字典keys,values,items的使用详解
Feb 03 Python
python中metaclass原理与用法详解
Jun 25 Python
python opencv 批量改变图片的尺寸大小的方法
Jun 28 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
浅谈PyTorch中in-place operation的含义
Jun 27 Python
Python库安装速度过慢解决方案
Jul 14 Python
怎么用Python识别手势数字
Jun 07 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多种序列化与反序列化的方法
2013/06/06 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
小程序云开发实战小结
2018/10/25 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
python字符串连接的N种方式总结
2014/09/17 Python
对于Python中线程问题的简单讲解
2015/04/03 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
python3.7.0的安装步骤
2018/08/27 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
深入了解Python enumerate和zip
2020/07/16 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
土木工程专业自荐信
2013/10/04 职场文书
《四季》教学反思
2014/04/08 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
出售房屋协议书范本
2014/10/06 职场文书
求职自我评价参考范文
2019/05/16 职场文书
七个Python必备的GUI库
2021/04/27 Python
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL