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 open读写文件实现脚本
Sep 06 Python
Python 异常处理实例详解
Mar 12 Python
深入讲解Java编程中类的生命周期
Feb 05 Python
python执行使用shell命令方法分享
Nov 08 Python
对python中的for循环和range内置函数详解
Apr 17 Python
python实现批量解析邮件并下载附件
Jun 19 Python
python中的插值 scipy-interp的实现代码
Jul 23 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
Jun 27 Python
python 如何引入协程和原理分析
Nov 30 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
基于PyInstaller各参数的含义说明
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邮箱地址正则表达式验证
2015/11/13 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
2017/04/03 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
一个javascript参数的小问题
2008/03/02 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
python实现ipsec开权限实例
2014/11/11 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
表彰大会主持词
2014/03/26 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
保研推荐信格式
2015/03/25 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript