数字
简介:
数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的对象。
Python 支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。
创建数字对象:
相当于给变量赋值
aInt = 1
更新数字对象:
相当于给数字对象重新赋值
aInt += 1
删除数字对象
del aInt
一、整型
【1】布尔型
ture、false
【2】标准整数类型
Python 的标准整数类型是最通用的数字类型。在大多数 32 位机器上,标准整数类型的取 值范围是-231 到 231-1,也就是-2,147,483,648 到 2,147,483,647。如果在 64 位机器上使 用 64 位编译器编译 Python,那么在这个系统上的整数将是 64 位
0101 84 -237 0x80 017 -680 -0X92
如果八进制整数以数字“0”开始, 十六进制整数则以 “0x” 或“0X” 开始。
【3】长整型
在一个整数值后面加个 L(大写或小写都可以),表示这个整数是 长整数。这个整数可以是十进制,八进制, 或十六进制。
16384L -0x4E8L 017L-2147483648l 052144364L
299792458l 0xDECADEDEADBEEFBADFEEDDEAL -5432101234L
二、双精度浮点数
浮点数值通常都有一个小数点和一个可选的后缀 e(大写或小写,表示科学计数法)。在 e 和指数之间可以用正(+)或负(-)表示指数的正负(正数的话可以省略符号)。
0.0 -777. 1.6 -5.555567119 4.3e25 9.384e-23
-2.172818 float(12) 1.000000001 3.1416 4.2E-10
-90. 6.022e2 96e3 * 1.0
三、复数
- 虚数不能单独存在,它们总是和一个值为0.0的实数部分一起来构成一个复数。
- 复数由实数部分和虚数部分构成
- 表示虚数的语法: real+imagj
- 实数部分和虚数部分都是浮点数
- 虚数部分必须有后缀j或J。
64.375+1j 4.23-8.5j 0.23-8.55j 1.23e-045+6.7e+089j 6.23+1.5j -1.23-875J
0+1j 9.80665-8.31441J -.0224+0j
【1】复数的内建属性
属性 |
描述 |
num.real |
复数的实部 |
num.imag |
复数的虚步 |
num.conjugate() |
复数的共轭复数 |
a = 1-2.4j print(a.real) #1.0 print(a.imag) #-2.4 print(a.conjugate()) #(1+2.4j)
五、运算符
【1】混合模式运算符
当两个整数相加时, + 号表示整数加法, 当两个浮点数相加时, + 表示浮点数加法。字符串 A + 字符 串 B 并不表示加法操作, 它表示的是把这两个字符串连接起来, 生成一个新的字符串。
1.0+2.0 #3.0 'a'+'b' #ab
注意:
虽然我们不能让一个数字和一个字符串相加, 但 Python 确实支持不同的数字类型相加。 当一个整数和一个浮点数相加时, 系统会决定使用整数加法还是浮点数加法(实际上并不存在 混合运算)。
首先,如果两个操作数都是同一种数据类型,没有必要进行类型转换。仅当两个操作数类 型不一致时, Python 才会去检查一个操作数是否可以转换为另一类型的操作数。如果可以, 转换它并返回转换结果。由于某些转换是不可能的,比如果将一个复数转换为非复数类型, 将 一个浮点数转换为整数等等,因此转换过程必须遵守几个规则。
要将一个整数转换为浮点数,只要在整数后面加个 .0 就可以了。 要将一个非复数转换为 复数,则只需要要加上一个 “0j” 的虚数部分。这些类型转换的基本原则是: 整数转换为浮 点数, 非复数转换为复数。
- 如果有一个操作数是复数, 另一个操作数被转换为复数。
- 否则,如果有一个操作数是浮点数, 另一个操作数被转换为浮点数。
- 否则, 如果有一个操作数是长整数,则另一个操作数被转换为长整数。
- 否则,两者必然都是普通整数,无须类型转换。
【2】算数运算符
以a=10 ,b=20为例进行计算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 a + b 输出结果 30 |
- | 减 | 得到负数或是一个数减去另一个数 a - b 输出结果 -10 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 |
/ | 除 | x除以y b / a 输出结果 2 |
// | 取整除 | 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
% | 取余 | 返回除法的余数 b % a 输出结果 0 |
** | 幂 | 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000 |
【3】赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7 |
【4】符合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
【5】位运算符(只用于整数)
Python 整数支持标准位运算:取反(~),按位 与(&), 或(|) 及 异或(^) 及左移(<<)和右 移(>>)。Python 这样处理位运算:
- 负数会被当成正数的2进制补码处理。
- 左移和右移 N 位等同于无溢出检查的 2 的 N 次幂运算: 2**N。
- 对长整数来说, 位运算符使用一种经修改的 2 进制补码形式,使得符号位可以无限的向左扩展。
取反(~)运算的优先级与数字单目运算符相同, 是所有位操作符中优先级最高的一个。 左移和右移运算的优先级次之,但低于加减法运算。与, 或, 异或 运算优先级最低。所有位运 算符按优先级高低列在表 。
位运算符 | 功能 |
num1 << num2 |
Num1 左移 num2 位 |
num1 >> num2 |
Num1 右移 num2 位 |
num1 & num2 | num1 与 num2 按位 与 |
num1 ^ num2 | num1 异或 num2 |
num1 | num2 | num1 与 num2 按位 或 |
30 & 45 #12 30 | 45 #63 45 & 60 #44 45 | 60 # 61 ~30 #-31 60 >> 2 #15 30 ^ 45 # 51
六、内建函数和工厂函数
【1】标准类型函数
函数 | 描述 |
cmp(a,b) (python3已经废除) |
比较a,b的大小 如果a>b,返回1 如果a=b,返回0 如果a<b,返回-1 |
str() | 将数字转换成字符串 |
type() |
返回数字对象的类型。 |
cmp(2,1) #1 cmp(1,1) #0 cmp(1,2) #-1 str(1) #'1' type(1) #<class 'int'>
【2】数字类型函数
数值工厂函数总结
类(工厂函数) | 描述 |
bool(obj) |
返回obj对象的布尔值 |
int(obj) |
返回一个字符串或数值对象的整数表示 |
long(obj) |
返回一个字符或数据对象的长整数表示 |
float(obj) |
返回一个字符串或数据对象的浮点数表示 |
complex(str) |
返回一个字符串的复数表示,或者根据给定的实数(及一个可选 的虚数部分)生成一个复数对象。 |
bool(1) #True bool(0) #False int(1) #1 float(1) #1.0 complex(1+2j) #(1+2j)
数值运算内建函数总结
函数 | 功能 |
abs(num) |
返回 num 的绝对值 |
coerce(num1, num2) |
将num1和num2转换为同一类型,然后以一个元组的形式返回。 |
divmod(num1, num2) |
除法-取余运算的结合。返回一个元组(num1/num2,num1 %num2)。对浮点数和复数的商进行下舍入(复数仅取实数部分的商) |
pow(num1, num2) |
取 num1 的 num2次方 |
round(flt, ndig=0) |
接受一个浮点数 flt 并对其四舍五入,保存 ndig位小数。若不提供ndig 参数,则默认小数点后0位 |
备注:round()仅用于浮点数。(整数也可以, 不过并没有什么实际意义)
- abs()返回给定参数的绝对值。如果参数是一个复数,那么就返回math.sqrt(num.real2 +num.imag2)
abs(-1) #1 abs(10.) #10.0 abs(3-4j) #5
- coerce(num1, num2) ,将num1和num2转换为同一类型,然后以一个元组的形式返回。python3已经废除
coerce(1,2) #(1, 2) coerce(1.3, 134L) #(1.3, 134.0) coerce(1, 134L) #(1L, 134L) coerce(1j, 134L) #(1j, (134+0j)) coerce(1.23-41j, 134L) #((1.23-41j), (134+0j))
divmod()内建函数把除法和取余运算结合起来, 返回一个包含商和余数的元组。对整数来说,它的返回值就是地板除和取余操作的结果。对浮点数来说, 返回的商部分是math.floor(num1/num2),对复数来说, 商部分是 ath.floor((num1/num2).real)。
divmod(10,3) #(3, 1) divmod(3,10) #(0, 3) divmod(10,2.5) #(4.0, 0.0) divmod(2.5,10) #(0.0, 2.5) divmod(2+1j, 0.5-1j) #(0j, (2+1j))
- 函数 pow()进行指数运算
pow(5,2) #25
- 内建函数 round()用于对浮点数进行四舍五入运算。它有一个可选的小数位数参数。如果不提供小数位参数, 它返回与第一个参数最接近的整数(但仍然是浮点类型)。第二个参数告诉 round 函数将结果精确到小数点后指定位数。
round(1) #1 round(1.49999) #1 round(1.49999,1) #1.5
【3】仅用于整数的函数
函数 | 功能 |
hex(num) | 将数字转换成十六进制数并以字符串形式返回 |
oct(num) | 将数字转换成八进制数并以字符串形式返回 |
chr(num) |
将ASCII值的数字转换成ASCII字符,范围只能是0 <= num <= 255。 |
ord(chr) | 接受一个 ASCII 或 Unicode 字符(长度为1的字符串),返回相应的ASCII 或Unicode 值。 |
进制转换函数
>>>hex(255) '0xff' >> hex(23094823l) '0x1606627L' >>> hex(65535*2) '0x1fffe' >>> oct(255) '0377' >>> oct(23094823l) '0130063047L' >>> oct(65535*2) '0377776'
ASCII 转换函数
函数 chr()接受一个单字节整数值,返回一个字符串,其值为对应的字符。函数 ord()则相反,它接受一个字符,返回其对应的整数值。
>>> ord('a') 97 >>> ord('A') 65 >>> ord('0') 48 >>> chr(97) 'a' >>> chr(65L) 'A' >>> chr(48) '0'