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基础教程之类class定义使用方法
Feb 20 Python
Python编写检测数据库SA用户的方法
Jul 11 Python
Python中tell()方法的使用详解
May 24 Python
python保存字符串到文件的方法
Jul 01 Python
Python用threading实现多线程详解
Feb 03 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
python中sys模块是做什么用的
Aug 16 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
PHP写杨辉三角实例代码
2011/07/17 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
详解PHP归并排序的实现
2016/10/18 PHP
jQuery 一个图片切换的插件
2011/10/09 Javascript
js有序数组的连接问题
2013/10/01 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
微信小程序背景音乐开发详解
2019/12/12 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python中反射用法实例
2015/03/27 Python
python回调函数用法实例分析
2015/05/09 Python
深入解析Python中的urllib2模块
2015/11/13 Python
设置python3为默认python的方法
2018/10/31 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
数控专业推荐信范文
2013/12/02 职场文书
文明教师事迹材料
2014/01/16 职场文书
军训新闻稿范文
2015/07/17 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
PHP中多字节字符串操作实例详解
2021/08/23 PHP
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL