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中使用中文的方法
Feb 19 Python
详解Python编程中time模块的使用
Nov 20 Python
Python pass详细介绍及实例代码
Nov 24 Python
django请求返回不同的类型图片json,xml,html的实例
May 22 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
python如何从文件读取数据及解析
Sep 19 Python
Python3常见函数range()用法详解
Dec 30 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
Python集合操作方法详解
Feb 09 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
Python openpyxl 插入折线图实例
Apr 17 Python
关于python爬虫应用urllib库作用分析
Sep 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在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
PHP 解决session死锁的方法
2013/06/20 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
python简单实现刷新智联简历
2016/03/30 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
详解Django 时间与时区设置问题
2019/07/23 Python
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
社区党建工作汇报材料
2014/08/14 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
国庆促销活动总结
2014/08/29 职场文书
史上最牛的辞职信
2015/02/28 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技