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使用scrapy抓取网站sitemap信息的方法
Apr 08 Python
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
Django接受前端数据的几种方法总结
Nov 04 Python
Python有序字典简单实现方法示例
Sep 28 Python
Python 实现淘宝秒杀的示例代码
Jan 02 Python
python实现简单http服务器功能
Sep 17 Python
Python中字符串与编码示例代码
May 20 Python
Python分析彩票记录并预测中奖号码过程详解
Jul 09 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
简单了解python元组tuple相关原理
Dec 02 Python
Python for循环搭配else常见问题解决
Feb 11 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
nodejs爬虫抓取数据之编码问题
2015/07/03 NodeJs
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
python中嵌套函数的实操步骤
2019/02/27 Python
Python遍历字典方式就实例详解
2019/12/28 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
python exit出错原因整理
2020/08/31 Python
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
教师求职信范文分享
2013/12/27 职场文书
2014年端午节活动方案
2014/03/11 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
工程催款通知书
2015/04/17 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL