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中的分片与截断序列
Aug 09 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
python celery分布式任务队列的使用详解
Jul 08 Python
使用python写一个自动浏览文章的脚本实例
Dec 05 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
Python tornado上传文件的功能
Mar 26 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
Python调用C/C++的方法解析
Aug 05 Python
python中pdb模块实例用法
Jan 15 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 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自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
Django model class Meta原理解析
2020/11/14 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
意大利男装网店:Vrients
2019/05/02 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
《争吵》教学反思
2014/02/15 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
学习经验演讲稿
2014/05/10 职场文书
服务标语口号
2014/07/01 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
工厂见习报告范文
2014/10/31 职场文书
物业接待员岗位职责
2015/04/15 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript