05 数字类型
基础数字类型:int(long)、float
bool类型: True:1 False:0
Python除了int和float外,还包括了一些较为少见的数字对象,例如复数、固定精度十进制数、有理数、集合和布尔值,第三方开源扩展领域甚至包含了更多(矩阵和向量)。
Python中的数字支持一般的数学运算。例如,加号(+)代表加法,星号(*)表示乘法,双星号(**)表示乘方。
十六进制数以0x或0X开头,后面接十六进制的数字0~9和A~F。十六进制的数字编写成大写或小写都可以。
八进制数常量以数字0o或0O开头(0和小写或大写的字母"o"),后面接着数字0~7构成的字符串。在Python 2.6及更早的版本中,八进制常量也可以写成前面只有一个0的形式,但在Python 3.0中不能这样(这种最初的八进制形式太容易与十进制数混淆,因此用新的0o的形式替代了)。
二进制常量,以0b或0B开头,后面跟着二进制数字(0~1)。
注意十六进制、八进制、二进制常量在程序代码中都产生一个整数对象,它们仅仅是某个特定整数值的不同语法表示而已。内置函数hex(I)、oct(I)和bin(I)把一个整数转换为这3种进制表示的字符串,并且int(str,base)根据每个给定的进制把一个字符串转换为一个整数。
>>> 0xff,0b11111111,0o377
(255, 255, 255)
>>> id(0xff)
23352136
>>> id(0b11111111)
23352136
>>> id(0o377)
23352136
+、-、*、/、>>、**、&等。
附:下图为python中所有的操作符表达式(优先级由低到高排序,同一行从左到右):
操作符 描述

Python允许我们把大小比较测试连接起来,成为诸如范围测试的连续比较。例如,表达式(A<B<C)测试B是否在A和C之间;它等同于布尔测试(A<B and B<C),但更容易辨识(和录入)。
真除法:10/4 结果为float
floor除法:10//4 结果为int
区别说明:
python3中x/y表示真除法,无论任何数据类型都会保留小数部分。 python3中,//的结果的数据类型依赖于操作数的类型,如果操作数中有一个是浮点数,结果就是浮点数,否则返回整数。此外还有一点,小数位如果有,则为0,直接效果是向下舍入。
>>> 10/4
2.5
>>> 10//4
2
>>> 10/4.0
2.5
>>> 10//4.0
2.0
在混合类型的表达式中,Python首先将被操作的对象转换成其中最复杂的操作对象的类型,然后再对相同类型的操作对象进行数学运算。如果你使用过C语言,你会发现这个行为与C语言中的类型转换是很相似的。 Python是这样划分数字类型的复杂度的:整数比浮点数简单,浮点数比复数简单。所以,当一个整数与浮点数混合时,整数首先会升级转为浮点数的值,之后通过浮点数的运算法则得到浮点数的结果。类似地,任何混合类型的表达式,其中一个操作对象是更为复杂的数字,则会导致其他的操作对象升级为一个复杂的数字,使得表达式获得一个复杂的结果。
再者,要记住所有这些混合类型转换仅仅发生在数字类型混合表达式中(例如,一个整数和一个浮点数),这包括那些使用数字和比较操作符的表达式。一般来说,Python不会在其他的类型之间进行转换。例如,一个字符串和一个整数相加,会产生错误,除非你手动转换其中某个的类型。
pow(x,y)幂运算、abs()绝对值、max()、 min()、sum(sequence[, start]) 、round()、int、hex、bin等
sum ((2,3,4),1)
sum([2,3,4])
hex(number) --> string
oct(number) -> string
bin(number) -> string
int(x[, base]) -> integer 将数字字符串转换为整数:base指定x的进制,int()将base进制的x字符串转换为10进制的整数
>>> hex(5)
'0x5'
>>> int('0x5',16)
5
math.pi
math.sqrt(85)
random.random()
random.choice([1,2,3,4])
>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17
>>> Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
Decimal('0.0')
Decimal小数对象:小数是通过一个导入的模块调用函数后创建的,而不是通过运行常量表达式创建的。从功能上来说,小数对象就像浮点数,只不过它们有固定的位数和小数点,因此小数是有固定的精度的浮点值。
向下取整直接用内建的 int() 函数即可:
>>> a = 3.75
>>> int(a)
3
>>> math.floor(4.2)
4
>>> math.floor(4.8)
4
向上取整需要用到 math 模块中的 ceil() 方法:
>>> import math
>>> math.ceil(3.25)
4
>>> math.ceil(3.75)
4
>>> math.ceil(4.85)
5
对数字进行四舍五入用 round() 函数:
>>> round(3.25); round(4.85)
3
5