数字

简介:

  数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的对象。 

  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) 
complex(real,imag=0.0)  

返回一个字符串的复数表示,或者根据给定的实数(及一个可选

的虚数部分)生成一个复数对象。

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 值。 

  进制转换函数 

  Python还提供了两个内建函数来返回字符串表示的8进制和16进制整数。它们分别是 oct() 和 hex()。它们都接受一个整数(任意进制的)对象,并返回一个对应值的字符串对象。
  
>>>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'

 

 

posted @ 2018-02-27 10:24  今晚打老虎i2016  阅读(386)  评论(0编辑  收藏  举报