首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

Python之4(数字)

2012-09-06 
Python之四(数字)数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的对象。当

Python之四(数字)

数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的
对象。当然,这个过程无论对程序员还是对用户都是透明的。

?

Python 支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。

?

声明一个数字:

?

标准类型的算术运算符

Python 支持单目运算符正号(+)和负号(-), 双目运算符, +,-,*,/,%,还有 ** ,分别表示加法、减法、乘法、除法、取余和幂运算。从Python2.2 起,还增加了一种新的整除运算符 // 。

?

//除法运算

// 除法不管操作数何种数值类型,总是舍去小数部分,返回比真正的商小的最接近的数字,如:5//2(或者5//2.0)返回2,而不是2.5

?

/除法运算

如果是整数除法,返回一个整数(舍小数取整)。如果操作数之一是浮点数,则返回正确的除法结果。如:

5/2返回2,而不是2.5;

5/2.0返回2.5(因为操作数之一是浮点数)

?

如何让5/2返回2.5,而不是2呢?

方法一:在py文件的第一行新增from __future__ import division指令;

方法二:给python解释器新增-Qnew启动参数。默认值是-Qold

?

%取模运算

整数的模运算返回两个操作数相除后的余数,如:5%2返回1

浮点数取模就略复杂些,商取小于等于精确值的最大整数的乘积之差, 即: x - (math.floor(x/y) * y)

复数取模运算类似于浮点数,不同之处在于商仅取其实数部分,即:x - (math.floor((x/y).real) * y)

?

常用的处理数字类型的内建函数

int(), long(), float() ,bool()和 complex() 用来将其它数值类型转换为相应的数值类型。

所有这些内建函数现在都转变为工厂函数。所谓工厂函数就是指这些内建函数都是类对象,当你调用它们时,实际上是创建了一个类实例。不过,这些函数的使用方法并没有什么改变。如:

int('100')返回100;

int(4.2)返回4;

bool(1)返回True

?

类(工厂函数)操作bool(obj)返回obj对象的布尔值,也就是obj.__nonzero__()方法的返回值int(obj, base=10)返回一个字符串或数值对象的整数表示,类似string.atoi()方法long(obj, base=10)返回一个字符或数据对象的长整数表示,类似string.atol()方法float(obj)返回一个字符串或数据对象的浮点数表示,类似string.atof()方法complex(str) 或者 complex(real, imag=0.0)返回一个字符串的复数表示,或者根据给定的实数(及一个可选的虚数部分)生成一个复数对象。

?

常用的功能函数

函数功能abs(num)返回 num 的绝对值coerce(num1, num2)将num1和num2转换为同一类型,然后以一个元组的形式返回divmod(num1, num2)除法-取余运算的结合。返回一个元组(num1/num2,num1 % num2)。对浮点数和复数的商进行下舍入(复数仅取实数部分的商)pow(num1, num2, mod=1)取 num1 的 num2次方,如果提供 mod参数,则计算结果再对mod进行取余运算round(flt, ndig=0)接受一个浮点数 flt 并对其四舍五入,保存 ndig位小数。若不提供ndig 参数,则默认小数点后0位

?

仅用于整数的函数

函数功能hex(num)将数字转换成十六进制数并以字符串形式返回oct(num)将数字转换成八进制数并以字符串形式返回chr(num)将ASCII值的数字转换成ASCII字符,范围只能是0 <= num <= 255ord(chr)接受一个 ASCII 或 Unicode 字符(长度为1的字符串),返回相应的ASCII或Unicode 值unichr(num)接受Unicode码值,返回 其对应的Unicode字符。所接受的码值范围依赖于你的Python是构建于UCS-2还是UCS-4

?

布尔数

从Python2.3 开始,布尔类型添加到了Python 中来。尽管布尔值看上去是“True” 和“False,但是事实上是整型的子类,对应与整数的1 和0。下面是有关布尔类型的主要概念:

有两个永不改变的值 True 或False。布尔型是整型的子类,但是不能再被继承而生成它的子类。没有__nonzero__()方法的对象的默认值是 True。对于值为零的任何数字或空集(空列表、空元组和空字典等)在Python 中的布尔值都是False。在数学运算中,Boolean 值的True 和False 分别对应于1 和 0。以前返回整数的大部分标准库函数和内建布尔型函数现在返回布尔型。True 和False 现在都不是关键字,但是在Python 将来的版本中会是。

使用decimal 模块

from decimal import Decimalaa = Decimal('0.1')print aa + 2

?输出2.1

?

数字类型相关模块

模块介绍decimal十进制浮点运算类 Decimalarray高效数值数组(字符,整数,浮点数等等)math/cmath标准C库数学运算函数。常规数学运算在match模块,复数运算在cmath模块operator数字运算符的函数实现。比如 tor.sub(m,n)等价于 m - nrandom

多种伪随机数生成器

?

核心模块: random

当你的程序需要随机数功能时,random 模块就能派上用场。该模块包含多个伪随机数发生器,它们均以当前的时间戳为随机数种子。这样只要载入这个模块就能随时开始工作。下面列出了该模块中最常用的函数:
randrange()

返回两个整数之间的随机整数,它接受和 range() 函数一样的参数, 随机返回range([start,]stop[,step])结果的一项
uniform()

几乎和 randint()一样,不过它返回的是二者之间的一个浮点数(不包括范围上限)。
random()

类似 uniform() 只不过下限恒等于0.0,上限恒等于1.0
choice()

随机返回给定序列的一个元素

?

参考资料:

Python核心编程(第二版) 人民邮电出版社

?

?

热点排行