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使用cPickle模块序列化实例
Sep 25 Python
python中随机函数random用法实例
Apr 30 Python
Python中http请求方法库汇总
Jan 06 Python
Python GUI布局尺寸适配方法
Oct 11 Python
python登录WeChat 实现自动回复实例详解
May 28 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
python将dict中的unicode打印成中文实例
May 11 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
Django日志及中间件模块应用案例
Sep 10 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 Python
用python制作个视频下载器
Feb 01 Python
Python如何加载模型并查看网络
Jul 15 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
jquery 问答知识整理
2010/02/11 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
Python函数参数分类原理详解
2020/05/28 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
数组越界问题
2015/10/21 面试题
20年同学聚会感言
2014/02/03 职场文书
执行总经理岗位职责
2014/02/03 职场文书
总经理的岗位职责
2014/02/23 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
文化宣传方案
2014/03/13 职场文书
护士节活动总结
2014/08/29 职场文书
语文教师个人工作总结
2015/02/06 职场文书
家长高考寄语
2015/02/27 职场文书
清明节寄语2015
2015/03/23 职场文书
保研推荐信范文
2015/03/25 职场文书
小王子读书笔记
2015/06/29 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL