03-基本数字类型与数值计算
基本数字类型
内置数字类型
python3 支持 int、float、bool、complex(复数)。
- 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 python3 没有 python2的 Long 类型。
- 浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2)。
- 复数(complex) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
在 python2中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。
进制表示
- 二进制:0b,0B
- 八进制:0o,0O
- 十六进制:0x,0X
var1 = 0b110
var2 = 0o10
var3 = 0x11
print(var1,var2,var3)
执行结果:
6 8 17
isinstance() 函数 和 type() 函数
- 内置的 type() 函数可以用来查询变量所指的对象类型
- 还可以用 isinstance 来判断是否为指定的数据类型:
a,b,c,d = 10,3.2,True,4+3j
print(type(a),type(b),type(c),type(d))
print(isinstance(a,int))
print(isinstance(b,str))
执行结果:
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
True
False
两者的区别:
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
class A:
pass
class B(A):
pass
print(isinstance(A(),A))
print(type(A()) == A)
print(isinstance(B(),A))
print(type(B()) == A)
执行结果:
True
True
True
False
python 数字类型转换
- int(x) 将x转换为一个整数
- float(x) 将x转换到一个浮点数
- complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0
- complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式
获取复数的实部和虚部
使用 real 和 imag 可以分别获取复数的实部和虚部
cn = complex(2,3)
print("Complex Number: ",cn)
print("Complex Number - Real part: ",cn.real)
print("Complex Number - Imaginary part: ",cn.imag)
执行结果:
Complex Number: (2+3j)
Complex Number - Real part: 2.0
Complex Number - Imaginary part: 3.0
数字计算和math包
基本的数字计算
- 加:x+y
- 减:x-y
- 乘:x*y
- 精确除法:x/y (结果是浮点类型,即使整除结果也是浮点类型)
- 地板除:x//y (结果只保留整数部分)
- 取余:x%y
- 幂:x**y,pow(x,y)
- 取正:+(x)
- 取负:-(x)
- 取绝对值:abs(x)
- 求商取余复合操作:divmod(x,y)
max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。
min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。
round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
math包
使用时需要导入:
import math
- pi 数学常量 pi(圆周率,一般以π来表示)
- e 数学常量 e,e即自然常数(自然常数)。
- 向上取整:ceil
- 向下取整:floor
- 任意x的幂运算:pow
- e的幂运算:exp
- 以e为底数对数运算:log
- 以10为底对数运算:log10
- 开平方运算:sqrt
- 求绝对值:fabs
- modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
- 角度值转换成弧度值:radians
- 弧度值转换成角度值:degrees
- 三角函数:sin,cos,tan,asin,acos,atan
random 包
- 给随机数生成种子,默认的种子是系统时钟:seed(x)
- 生成0-1.0之间的随机小数:random()
- 生成a-b之间的随机小数:uniform(a,b)
- 生成a-b之间的随机整数:randint(a,b)
- 生成a-b之间以c递增的数:randrange(a,b,c)
- 从列表中随机返回一个数:choice(list)
- 将列表元素随机打乱:shuffle(list)
- 从列表中随机抽取k个元素:sample(lisy,k)
import random
#设置随机数种子
random.seed(1)
#生成一个随机数
print(random.random())
#生成一个1-5之间的随机数
print(random.uniform(1,5))
#生成一个1-10之间的随机数
print(random.randint(1,10))
#生成一个1-10之间以3递增的随机数
print(random.randrange(1,10,3))
# 创建一个列表
list = ['hello','world','any','way']
# 从列表中随机返回一个值
print(random.choice(list))
# 打乱列表元素的顺序
random.shuffle(list)
# 从列表中随机抽取3个元素
print(random.sample(list,3))
执行结果:
0.13436424411240122
4.389734947748931
2
4
hello
['way', 'hello', 'world']