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装饰器使用实例:验证参数合法性
Jun 24 Python
Python三级目录展示的实现方法
Sep 28 Python
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
python数据结构之链表详解
Sep 12 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
简单介绍python封装的基本知识
Aug 10 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
Python基于pandas爬取网页表格数据
May 11 Python
如何解决pycharm调试报错的问题
Aug 06 Python
Django Paginator分页器的使用示例
Jun 23 Python
Python实现信息管理系统
Jun 05 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
解决layer图标icon不加载的问题
2019/09/04 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
大学本科毕业生的自我鉴定
2013/11/26 职场文书
研究生求职推荐信范文
2013/11/30 职场文书
学雷锋月活动总结
2014/04/25 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
出国留学单位推荐信
2015/03/26 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python