python - 内置类型 之 数字类型及运算符

目录

一、python数字类型介绍

1.数据类型介绍

2.数值运算

3.混合类型运算规则

4.整数按位运算

5.数字函数方法

6.整数与浮点数附加方法

7.数字类型转换

8.数字类型判断

9.数字精度控制

二、python运算符

1.1算术运算符

1.2比较运算符

 1.3成员运算符

 1.4赋值运算符

 1.5逻辑运算符

1.6身份运算符

1.7位运算符

1.8运算符优先级


 

一、python数字类型介绍

1.数据类型介绍

(1)整型(Int)

Python3 整型没有限制长度,布尔值属于整数的子类型

(2)浮点型(float)

(3)复数(complex)

由实数和虚数组成,用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

注:(1)数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间。

 

2.数值运算

  • x + y x 和 y 的和
  • x - y x 和 y 的差
  • x * y x 和 y 的乘积
  • x / y x 和 y 的商
  • x // y x 和 y 的商数[取整除] 例:9//2=4
  • x % y 取模(返回余数) 例:9%2=1
  • -x x  取反
  • +x x  不变
  • divmod(x, y) (x // y, x % y)
  • pow(x, y) x 的 y 次幂
  • x ** y x 的 y 次幂

 

3.混合类型运算规则

  • 当不同数字类型运算,具有“较窄” 类型的数字会被转为另一个数字的类型,
  • 整数比浮点数更窄,浮点数又比复数更窄。 混合类型数字之间的比较也使用相同的规则。

 

4.整数按位运算

按位运算只适合整数,二进制按位运算的优先级全都低于数字运算,但又高于比较运算.

  • x | y x 和 y 按位 或
  • x ^ y x 和 y 按位 异或
  • x & y x 和 y 按位 与
  • x << n x 左移 n 位
  • x >> n x 右移 n 位
  • ~x x 逐位取反

 

5.数字函数方法

  • abs(x) 返回数字的绝对值,如abs(-10) 返回 10
  • ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5
  • floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
  • cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。Python 3 已废弃 。使用 使用 (x>y)-(x
  • exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
  • fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0
  • log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
  • log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0
  • max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。
  • min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。
  • modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
  • pow(x, y) x**y运算后的值。
  • round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
  • sqrt(x) 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j

 

6.整数与浮点数附加方法

#整数附加方法

  • int.bit_length() 返回以二进制表示一个整数所需要的位数,不包括符号位和前面的零。
  • int.to_bytes() 返回表示一个整数的字节数组。
  • int.from_bytes() 返回由给定字节数组所表示的整数。

 

#浮点数附加方法

  • float.as_integer_ratio() 返回一对整数,其比率正好等于原浮点数并且分母为正数。 无穷大会引发 OverflowError 而 NaN 则会引发 ValueError。
  • float.is_integer() 如果 float 实例可用有限位整数表示则返回 True,否则返回 False:
  • float.hex() 以十六进制字符串的形式返回一个浮点数表示。 对于有限浮点数,这种表示法将总是包含前导的 0x 和尾随的 p 加指数。
  • float.fromhex(s) 返回以十六进制字符串 s 表示的浮点数的类方法。 字符串 s 可以带有前导和尾随的空格。

 

7.数字类型转换

  • int(x[,base ]) 将x转换为一个整数
  • long(x[,base ]) 将x转换为一个长整数
  • float(x) 将x转换到一个浮点数
  • complex(real [,imag ]) 创建一个复数
  • str(x) 将对象 x 转换为字符串
  • repr(x) 将对象 x 转换为表达式字符串
  • eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
  • tuple(s) 将序列 s 转换为一个元组
  • list(s) 将序列 s 转换为一个列表
  • chr(x) 将一个整数转换为一个字符
  • unichr(x) 将一个整数转换为Unicode字符
  • ord(x) 将一个字符转换为它的整数值
  • hex(x) 将一个整数转换为一个十六进制字符串
  • oct(x) 将一个整数转换为一个八进制字符串
  • round(x[, n]) x 舍入到 n 位小数,半数值会舍入到偶数。 如果省略 n,则默认为 0。
  • math.trunc(x) x 截断为 Integral
  • math.floor(x) <= x 的最大 Integral
  • math.ceil(x) >= x 的最小 Integral

 

8.数字类型判断

(1)type()方法

if str(type(12.3))=="": print('yes')

 

(2)isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()

以下都返回True

isinstance(12,int)

isinstance(12.3,float)

isinstance('abc',str)

 

9.数字精度控制

round()内置方法

round实现数值四舍五入的控制精度

>>> round(2.5)

>>> round(2.675, 2)

 

使用格式化

效果和round()是一样的。

>>> a = ("%.2f" % 2.635)

>>> a = ("%.2f" % 2.645)

 

 

二、python运算符

1.1算术运算符

以下假设变量a为10,变量b为21:

python - 内置类型 之 数字类型及运算符_第1张图片

 

以下实例演示了Python所有算术运算符的操作:

#!/usr/bin/python3

 

a = 21

b = 10

c = 0

 

c = a + b

print ("1 - c 的值为:", c)

 

c = a - b

print ("2 - c 的值为:", c)

 

c = a * b

print ("3 - c 的值为:", c)

 

c = a / b

print ("4 - c 的值为:", c)

 

c = a % b

print ("5 - c 的值为:", c)

 

# 修改变量 a 、b 、c

a = 2

b = 3

c = a**b

print ("6 - c 的值为:", c)

 

a = 10

b = 5

c = a//b

print ("7 - c 的值为:", c)

 

以上实例输出结果:

1 - c 的值为: 31

2 - c 的值为: 11

3 - c 的值为: 210

4 - c 的值为: 2.1

5 - c 的值为: 1

6 - c 的值为: 8

7 - c 的值为: 2

 

1.2比较运算符

以下假设变量a为10,变量b为20:

 

python - 内置类型 之 数字类型及运算符_第2张图片

以下实例演示了Python所有比较运算符的操作:

#!/usr/bin/python3

 

a = 21

b = 10

c = 0

 

if ( a == b ):

print ("1 - a 等于 b")

else:

print ("1 - a 不等于 b")

 

if ( a != b ):

print ("2 - a 不等于 b")

else:

print ("2 - a 等于 b")

 

if ( a < b ):

print ("3 - a 小于 b")

else:

print ("3 - a 大于等于 b")

 

if ( a > b ):

print ("4 - a 大于 b")

else:

print ("4 - a 小于等于 b")

 

# 修改变量 a 和 b 的值

a = 5;

b = 20;

if ( a <= b ):

print ("5 - a 小于等于 b")

else:

print ("5 - a 大于 b")

 

if ( b >= a ):

print ("6 - b 大于等于 a")

else:

print ("6 - b 小于 a")

 

以上实例输出结果:

1 - a 不等于 b

2 - a 不等于 b

3 - a 大于等于 b

4 - a 大于 b

5 - a 小于等于 b

6 - b 大于等于 a

 

 1.3成员运算符

 除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符

描述

实例

in

如果在指定的序列中找到值返回 True,否则返回 False。

x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

not in

如果在指定的序列中没有找到值返回 True,否则返回 False。

x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

 

以下实例演示了Python所有成员运算符的操作:

#!/usr/bin/python3

a = 10

b = 20

list = [1, 2, 3, 4, 5 ];

 

if ( a in list ):

print ("1 - 变量 a 在给定的列表中 list 中")

else:

print ("1 - 变量 a 不在给定的列表中 list 中")

 

if ( b not in list ):

print ("2 - 变量 b 不在给定的列表中 list 中")

else:

print ("2 - 变量 b 在给定的列表中 list 中")

 

# 修改变量 a 的值

a = 2

if ( a in list ):

print ("3 - 变量 a 在给定的列表中 list 中")

else:

print ("3 - 变量 a 不在给定的列表中 list 中")

 

以上实例输出结果:

1 - 变量 a 不在给定的列表中 list 中

2 - 变量 b 不在给定的列表中 list 中

3 - 变量 a 在给定的列表中 list 中

 

 1.4赋值运算符

 以下假设变量a为10,变量b为20:

 

python - 内置类型 之 数字类型及运算符_第3张图片

以下实例演示了Python所有赋值运算符的操作:

#!/usr/bin/python3

a = 21

b = 10

c = 0

 

c = a + b

print ("1 - c 的值为:", c)

 

c += a

print ("2 - c 的值为:", c)

 

c *= a

print ("3 - c 的值为:", c)

 

c /= a

print ("4 - c 的值为:", c)

 

c = 2

c %= a

print ("5 - c 的值为:", c)

 

c **= a

print ("6 - c 的值为:", c)

 

c //= a

print ("7 - c 的值为:", c)

 

以上实例输出结果:

1 - c 的值为: 31

2 - c 的值为: 52

3 - c 的值为: 1092

4 - c 的值为: 52.0

5 - c 的值为: 2

6 - c 的值为: 2097152

7 - c 的值为: 99864

 

 

 1.5逻辑运算符

 Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

运算符

逻辑表达式

描述

实例

and

x and y

布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。

(a and b) 返回 20。

or

x or y

布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。

(a or b) 返回 10。

not

not x

布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

not(a and b) 返回 False

以上实例输出结果:

#!/usr/bin/python3

a = 10

b = 20

 

if ( a and b ):

print ("1 - 变量 a 和 b 都为 true")

else:

print ("1 - 变量 a 和 b 有一个不为 true")

 

if ( a or b ):

print ("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")

else:

print ("2 - 变量 a 和 b 都不为 true")

 

# 修改变量 a 的值

a = 0

if ( a and b ):

print ("3 - 变量 a 和 b 都为 true")

else:

print ("3 - 变量 a 和 b 有一个不为 true")

 

if ( a or b ):

print ("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")

else:

print ("4 - 变量 a 和 b 都不为 true")

 

if not( a and b ):

print ("5 - 变量 a 和 b 都为 false,或其中一个变量为 false")

else:

print ("5 - 变量 a 和 b 都为 true")

 

以上实例输出结果:

1 - 变量 a 和 b 都为 true

2 - 变量 a 和 b 都为 true,或其中一个变量为 true

3 - 变量 a 和 b 有一个不为 true

4 - 变量 a 和 b 都为 true,或其中一个变量为 true

5 - 变量 a 和 b 都为 false,或其中一个变量为 false

 

 

1.6身份运算符

身份运算符用于比较两个对象的存储单元

运算符

描述

实例

is

is是判断两个标识符是不是引用自一个对象

x is y, 如果 id(x) 等于 id(y) , is 返回结果 1

is not

is not是判断两个标识符是不是引用自不同对象

x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1

 

以下实例演示了Python所有身份运算符的操作:

#!/usr/bin/python3

a = 20

b = 20

 

if ( a is b ):

print ("1 - a 和 b 有相同的标识")

else:

print ("1 - a 和 b 没有相同的标识")

 

if ( id(a) == id(b) ):

print ("2 - a 和 b 有相同的标识")

else:

print ("2 - a 和 b 没有相同的标识")

 

# 修改变量 b 的值

b = 30

if ( a is b ):

print ("3 - a 和 b 有相同的标识")

else:

print ("3 - a 和 b 没有相同的标识")

 

if ( a is not b ):

print ("4 - a 和 b 没有相同的标识")

else:

print ("4 - a 和 b 有相同的标识")

 

以上实例输出结果:

1 - a 和 b 有相同的标识

2 - a 和 b 有相同的标识

3 - a 和 b 没有相同的标识

4 - a 和 b 没有相同的标识

 

 

1.7位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

下表中变量 a 为 60,b 为 13二进制格式如下:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a = 1100 0011

 

运算符

描述

实例

&

按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

(a & b) 输出结果 12 ,二进制解释: 0000 1100

|

按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。

(a | b) 输出结果 61 ,二进制解释: 0011 1101

^

按位异或运算符:当两对应的二进位相异时,结果为1

(a ^ b) 输出结果 49 ,二进制解释: 0011 0001

~

按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1

(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。

<<

左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

a << 2 输出结果 240 ,二进制解释: 1111 0000

>>

右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

a >> 2 输出结果 15 ,二进制解释: 0000 1111

 

以下实例演示了Python所有位运算符的操作:

#!/usr/bin/python3

a = 60 # 60 = 0011 1100

b = 13 # 13 = 0000 1101

c = 0

 

c = a & b; # 12 = 0000 1100

print ("1 - c 的值为:", c)

 

c = a | b; # 61 = 0011 1101

print ("2 - c 的值为:", c)

 

c = a ^ b; # 49 = 0011 0001

print ("3 - c 的值为:", c)

 

c = ~a; # -61 = 1100 0011

print ("4 - c 的值为:", c)

 

c = a << 2; # 240 = 1111 0000

print ("5 - c 的值为:", c)

 

c = a >> 2; # 15 = 0000 1111

print ("6 - c 的值为:", c)

 

以上实例输出结果:

1 - c 的值为: 12

2 - c 的值为: 61

3 - c 的值为: 49

4 - c 的值为: -61

5 - c 的值为: 240

6 - c 的值为: 15

 

 

1.8运算符优先级

 以下表格列出了从最高到最低优先级的所有运算符:

运算符

描述

**

指数 (最高优先级)

~ + -

按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)

* / % //

乘,除,取模和取整除

+ -

加法减法

>> <<

右移,左移运算符

&

位 'AND'

^ |

位运算符

<= < > >=

比较运算符

<> == !=

等于运算符

= %= /= //= -= += *= **=

赋值运算符

is is not

身份运算符

in not in

成员运算符

not or and

逻辑运算符

 

以下实例演示了Python所有运算符优先级的操作:

#!/usr/bin/python3

a = 20

b = 10

c = 15

d = 5

e = 0

 

e = (a + b) * c / d #( 30 * 15 ) / 5

print ("(a + b) * c / d 运算结果为:", e)

 

e = ((a + b) * c) / d # (30 * 15 ) / 5

print ("((a + b) * c) / d 运算结果为:", e)

 

e = (a + b) * (c / d); # (30) * (15/5)

print ("(a + b) * (c / d) 运算结果为:", e)

 

e = a + (b * c) / d; # 20 + (150/5)

print ("a + (b * c) / d 运算结果为:", e)

 

以上实例输出结果:

(a + b) * c / d 运算结果为: 90.0

((a + b) * c) / d 运算结果为: 90.0

(a + b) * (c / d) 运算结果为: 90.0

a + (b * c) / d 运算结果为: 50.0

 

 

 

你可能感兴趣的:(python,python)