简介
①Python中数字支持以下类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数
②创建数字对象和给变量赋值一样】
③用del删除对对象的引用。删除之后,无法再使用这个引用(变量名),否则会抛出NameError异常
>>> a = 123 >>> a 123 >>> del a >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module>NameError : name 'a' is not defined
2.整型
(1)布尔型 该类型取值范围只要两个值:布尔值True 和 布尔值False
(2)标准整型 长整型
①python标准整型取值范围是 -231~231-1,也就是-2 147 483 648~2 147 483 648.
②python标准整型等价于C中的长整型
③整型一般以10进制表示,但python也支持八进制、十六进制。八进制整数以0开始,十六进制整数以0x 或 0X开始
④在整型的后面加上大写的L来表明这是一个长整型
3.浮点型
浮点型通常有一个小数点和一个可选的后缀e表示科学记数法,e后面接指数,e和指数之间用正负号表示指数的正负,正数可以省略符号。
4.复数
①复数的几个概念:
虚数不能单独存在,它们总是和一个实数一起构成复数
复数由实数部分和虚数部分构成
表示虚数的语法:real + imagj
实数部分和虚数部分都是浮点型
虚数部分必须有后缀j或J
②复数的内建属性:
注:共轭复数是指两个实部相等、虚部互为相反数的复数(conjugate complex number)。当虚部不为0时,共轭复数就是实部相等虚部相反;当虚部为0时,共轭复数就是其本身。
>>> acomplex = 2.22-1.33j >>> acomplex (2.22-1.33j) >>> acomplex.real 2.22 >>> acomplex.imag 1.33 >>> acomplex.conjugate() (2.22+1.33j)
5.操作符
(1)混合模式操作符
python中不同类型的数字相加时,会使用数字类型强制转换的方式解决数字类型不一致的问题。转换规则在于:
如果一个操作数是复数,则另一个操作数被转换为复数;
否则,如果有一个是浮点数,另一个被转换成浮点数;
否则,如果有一个是长整型,另一个被转换成长整型;
否则,两者都是整型,无须转换
(2)算术操作符
①python中除法包括一下几种:
传统除法,操作符"/"。传统除法的两个操作数如果都是整型,那么传统除法会舍去小数部分,返回一个整型;如果其中一个操作数是浮点数,则执行真正的除法。
>>> 1 / 2 0 >>> 1.0 / 2 0.5
真正的除法是不管操作数是整型还是浮点型,总是返回真正的商,这是Python未来的标准。现阶段,通过执行 from __future__ import division 指令,操纵符"/"无论两个操作数是整型还是浮点型,均执行真正的除法
>>> from __future__ import division>>> >>> 1 / 2 0.5 >>> 1.0 / 2 0.5
地板除,python 2.2 引入的新操作符"//",执行地板除,不管操作数是何种类型的数值,总是舍去小数部分,返回比真正的商小的最接近的数字
>>> 1 // 2 0 >>> 1.0 // 2 0.0
②取余
浮点型取余按照以下规则:
x % y = x - x // y * y
例如
复数取余类似浮点型,不同点在于商只取实数部分
③位操作符(仅适用于整型)
python整型支持标准位运算:取反(~);按位与(&);按位或(|);异或(^)以及左移(<<)和右移(>>)。位运算是把数字看作二进制来计算
A.取反运算
对一个二进制数按位取反,即0变1,1变0.
十进制数相当于-(num+1)
B.左移、右移
对一个数num左移x,相当于取 num * 2 ** x
右移相反,相当于取 num / 2 ** x
C.按位与/按位或
按照二进制补码运算 按位与每位按照规则:1&1=1;1&0=0;0&0=0;0&1=1运算。
按位或每位按照规则:1|1=1;1|0=1;0|0=0;0|1=1
如:5的二进制表示是 101,6的二进制表示是110,则按位与是100,即十进制的4;按位或是111,即十进制的7
7的二进制表示是111,8的二进制表示是1000,则按位与是0000,即十进制的0;按位或是1111,即十进制的15
D.异或
按照二进制运算,对应的每位相异时结果为1,相同时为0
如9的二进制表示1001,10的二进制表示1010,则按位异或是0011,即十进制的3
11的二进制表示1011,12的二进制表示1100,按位异或是0111,即十进制的7
6.内建函数与工厂函数
(1)转换工厂函数
int()、long()、float()、complex()函数用来将其他数值类型转换为相应的数值类型,也可以返回字符串表示的数值
int()、long()可以接受第二个可选参数,用来将给定的实参转换成相应进制
>>> int('12', 3) 5
注意 这里int()若要给定第二个参数时,第一个参数12要以字符串的形式给出;且并不是把12转换位3进制,而是把12当作3进制的数转换成10进制表示。
complex()可以接受两个参数,第一个参数是复数的实部,第二个参数是复数的虚部,第二个参数默认为0.
>>> int(1.23) 1 >>> long(123) 123L >>> float(123) 123.0 >>> complex(123) (123+0j) >>> complex(123,456) (123+456j) >>> complex(1.23e-2,1.23e3) (0.0123+1230j)
(2)功能函数
python有5个内建函数用于数值运算,包括abs() coerce() divmod() pow() round()
① abs()
abs()返回给定参数的绝对值。若参数是复数,则返回复数的模,即复数实部和虚部的平方和的正的平方根(math.sqrt(real2+imag2)).参数可以是表达式。
>>> abs(-1) 1 >>> abs(1.1) 1.1 >>> abs(3 + 4j) 5.0 >>> abs(1.22 - 10.22) 9.0
②coerce()
coerce()是一个数据类型转换函数,接受两个参数,返回一个包含转换类型后的两个数值的元组,转换的规则类似于不同类型数值参与运算时的转换规则
>>> coerce(1,2) (1,2) >>> >>> coerce(1.3,134L) (1.3,134.0) >>> >>> coerce(1,12L) (1L,12L) >>> >>> (1j,12L) (1j,(12+0j))
③divmod()
divmod()函数结合了除法和取余,接受两个参数,被除数和除数,返回一个包含商、余数的元组。执行的除法都是地板除,余数通过取余运算得到。
>>> divmod(11,3) (3,2) >>> divmod(3,11) (0,3) >>> divmod(3,1.5) (2.0,0.0) >>> divmod(1.5,3) (0.0,1.5) >>> divmod(2+34j,1+17j) ((2+0j),0j) #复数的商仅取实数部分的商
④pow()
pow()和双星号**功能类似,都是指数运算。pow()接受三个参数,第一个参数是底数,第二个参数是指数,这两个是必选的;pow()还可以接受第三个可选参数,如果给出这个参数,pow()先进行指数运算,然后将运算结果和第三个参数进行取余运算。这个特性主要用于密码运算,且效率比pow(x,y) % z 好!
>>> pow(2,3) 8 >>> pow(3,2) 9 >>> pow(2,3,3) 2 >>> pow(1+2j,4) (-7-24j)
⑤round()
内建函数round()用来对浮点型进行四舍五入。接受两个参数第一个是要进行四舍五入的浮点型,第二个可选参数告诉round()函数将结果精确到小数点后指定位数。不指定第二个参数,则返回与第一个参数最接近的整型,即保留小数点后0位(仍然是浮点型)
>>> round(3) 3.0 >>> round(3.45) 3.0 >>> round(3.4999) 3.0 >>> round(3.499999,1) 3.5 >>> round(-3.5) -4.0 >>> round(-3.4) -3.0
⑥int() round() math.floor()区别
函数int()直接截去小数部分,返回值是整型
函数math.floor()得到最接近原数但小于原数的整型,返回值是浮点型
函数round()按四舍五入的规则进行取整,得到最接近原数的整型,返回值是浮点型
(3)仅用于整型的函数
Python提供仅适用于整型的内建函数,可以分为两类:一类用于进制转换;一类用于ASCII转换
①进制转换函数
python内建函数oct()接受一个任意进制的整型对象,返回相应的八进制(以0开头)的字符串对象
内建函数hex()接受一个任意进制的整型对象,返回相应的十六进制(以0X开头)的字符串对象
>>> oct(25) '031' >>> oct(31) '037' >>> hex(255) '0xff' >>> hex(192) '0xc0'
②ASCII转换函数
python内建函数chr()接受一个单字节整型值,返回一个字符串,字符串值为对应的字符
内建函数ord()则相反,接受一个字符,返回其对应的整型值
>>> chr(65) 'A' >>> chr(97) 'a' >>> chr(48) '0' >>> >>> ord('a') 97 >>> ord('A') 65 >>> ord('0') 48
③全家福:
7.其他数字类型
(1)布尔型
几条性质:
①布尔值事实上是整型的子类,True对应整型1,False对应整型0
②所以的python对象都有一个内建的True或False值。下列对象的布尔值是False:
None;
False (布尔类型);
所有的值为零的数;
0 (整型);
0.0(浮点型);
0L (长整型);
0.0+0.0j(复数);
"" (空字符串);
[] (空列表);
() (空元组);
{} (空字典);
值不是上面列出来的任何值的对象的布尔值都是 True,例如 non-empty、 non-zero 等等。 用户创建的类实例如果定义了 nonzero(__nonzero__())或 length(__len__())且值为 0,那么它们的布尔值就是 False。
>>> bool(1) True >>> bool(True) True >>> bool(0) False >>> bool("0") True >>> bool(0.0) False >>> bool(0L) False >>> bool([]) False
8.相关模块
①python关于数值的常见模块如图
②关于random的介绍
例:
>>> import random >>> random.randint(12,23) 16 >>> random.randrange(12,23) 18 >>> random.uniform(12,23) 13.5080332618 >>> random.random() 0.6490402518091863 >>> random.choice([12,15,16,18,19,20]) 20 >>> random.choice([12,15,16,18,19,20]) 16 >>> random.choice([12,15,16,18,19,20]) 19