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 15 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
Jul 11 Python
python实现五子棋小游戏
Mar 25 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
python实现程序重启和系统重启方式
Apr 16 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
Python如何使用PIL Image制作GIF图片
May 16 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 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多个文件上传到服务器实例
2014/10/29 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
javascript的对话框详解与参数
2007/03/08 Javascript
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
使用javascript做在线算法编程
2018/05/25 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
python安装oracle扩展及数据库连接方法
2017/02/21 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
python获取txt文件词向量过程详解
2019/07/05 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Django日志及中间件模块应用案例
2020/09/10 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
this关键字的含义
2015/04/08 面试题
优秀党支部事迹材料
2014/01/14 职场文书
企业口号大全
2014/06/12 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
护理见习报告范文
2014/11/03 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers