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获取Linux系统下的本机IP地址代码分享
Nov 07 Python
Python使用random和tertools模块解一些经典概率问题
Jan 28 Python
用Python制作简单的朴素基数估计器的教程
Apr 01 Python
详解Python中的Cookie模块使用
Jul 06 Python
Python实现二分查找与bisect模块详解
Jan 13 Python
python高级特性和高阶函数及使用详解
Oct 17 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
Django 自定义404 500等错误页面的实现
Mar 08 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
python lambda 表达式形式分析
Apr 03 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
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
Node.js文件操作详解
2014/08/16 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
python将文本转换成图片输出的方法
2015/04/28 Python
详解python单例模式与metaclass
2016/01/15 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
军人违纪检讨书
2014/02/04 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
企业出纳岗位职责
2014/03/12 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
婚宴主持词
2015/06/30 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技