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']
posted @ 2019-02-26 23:46  youngliu91  阅读(167)  评论(0编辑  收藏  举报