Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之数字类型(number)

  Python 数字类型(number)用于存储数值。数据类型是不允许改变的,这就意味着如果改变number数据类型的值,将重新分配内存空间。

 

1.   一个简单的示例:

 1 # 以下实例在变量赋值时数字类型对象将被创建
 2 var1 = 1
 3 var2 = 10
 4 
 5 # 也可以额用del语句删除一些胡子类型对象的引用。
 6 # del 语句的语法是:
 7 del var1[,var2[,var3[....,varN]]]]
 8 
 9 del var
10 del var_a, var_b

 

2.   Python支持四种不同的数值类型:

整型(int):通常被称为是整型或整数,是正或负数,不带小数点。

长整型(long integers):无限大小的整数,整数最后是一个大写或小写的L。

浮点型(floating point real values):浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 × 102 = 250)

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

 

3.   Python number 类型转换

  函:int

    语:int(x, base=2/8/10/16)

      用:base默认为10进制算法,可以选择二进制、八进制、十六进制等)

 1  # int
 2  x = 4852666.12345
 3  y = int(x)
 4  print(x, y, sep="***")
 5  # 输出结果:4852666.12345***4852666
 6  
 7 x = "0b1001"
 8 y = int(x, base=2)  # 二进制算法
 9 print(x, y, sep="***")
10 # 输出结果:0b1001***9
11 # 
12 print(int(1.9)) # 将浮点型转换成整数,获取整数部分,向下取整
13 print(float(1)) # 将整数转换成为浮点型,向下加上小数位
14 # 输出结果:1.0
15 print(int("123")) # 字符串如果是数字字符串的话可以转换效果同eval
16 # 输出结果:123
17 
18 print(int("123")) # 字符串如果是数字字符串的话可以转换效果同eval
19 # 输出结果:123
20 print(int("+123"))
21 # 输出结果:123
22 print(int("-123"))
23 # 输出结果:-123
24 # print(int("12+3+3")) # 加号减号,作为正负号才有意义
25 # 输出结果:错误!

  函:float

    语:float(x)

      用:转换一个浮点型数值,默认为六位四舍五入的方式

1 # float
2 x = 4852666.123456789923456789
3 print(x)
4 # 输出结果:4852666.12345679
5 print(float("12.3")) # 字符串如果是数字字符串的话可以转换
6 # 输出结果:12.3
7  print(float(1)) # 将整数转换成为浮点型,向下加上小数位
8 # 输出结果:1.0

  函:complex

    语:complex(x)

      用:创建一个复数

1 # complex
2 print(complex(12, 15)) # 创建一个复数
3 # 输出结果:
4 # (12+15j) 12位实数部分,15j为虚数部分

  函:str

    语:str(x)

      用:将对象x转换为表字符串

1 # str
2 print(type(str(123))) # 将对象转换成为一个字符串
3 # 输出结果:
4 # <class 'str'>

  函:repr

    语:repr(x)

      用:将对象x转换为表达式字符串

1 # repr
2 print(type(repr(123)))  # 将对象转换为表达式字符串
3 # 输出结果:
4 # <class 'str'>

  函:eval

    语:eval(str)

      用:1.用来计算再字符串中有效Python表达式,并返回一个对象;2.用来把字符串中的数据类型提取出来。

 1 print(eval("12+3")) # 字符串内数字运算方式
 2 # 输出结果:15
 3 
 4 a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
 5 b = eval(a)
 6 print(b, type(b))  # 将字符串转换成列表
 7 # 输出结果:[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]] <class 'list'>
 8 
 9 a = "{1: 'a', 2: 'b'}"
10 b = eval(a)
11 print(b, type(b))  # 将字符串转换成字典
12 # 输出结果:{1: 'a', 2: 'b'} <class 'dict'>
13 
14 a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
15 b = eval(a)
16 print(b, type(b))  # 将字符串转换成元组
17 # 输出结果:([1, 2], [3, 4], [5, 6], [7, 8], (9, 0)) <class 'tuple'>

  函:tuple

    语:tuple(s)

      用:将序列s转换成一个元组

1 # tuple
2 print(tuple("123你好")) # 将字符串内的的元素按照单个方式转换成元组
3 # 输出结果:
4 # ('1', '2', '3', '你', '好')

  函:list

    语:list(s)

      用:将序列s转换成一个列表

1 # list
2 print(list("123你好")) # 将字符串内的元素按照单个方式转换成列表
3 # 输出结果:
4 # ['1', '2', '3', '你', '好']

  函:ord 和 char

    语:ord(x)、char(x)

      用:对照ASCII码表,获得一个字符的整数值;由整数值获得一个字符

1 # char
2 print(chr(80)) # 将一个整数转换为一个字符,对应ASCII码表。
3 # 输出结果:P
4 
5 # ord
6 print(ord("C")) # 将一个字符转换成它的整数值,对应ASCII码表。
7 # 输出结果:67

  函:oct、hex

    语:oct(x)、hex(x)

      用:将一个整数转换为一个八进制字符串;将一个整数转换为一个十六进制字符串

1 # hex
2 print(hex(123456)) # 将一个整数转换为一个十六进制字符串
3 # 输出结果:0x1e240
4 
5 # oct
6 print(oct(123456)) # 将一个整数转换为一个八进制字符串
7 # 输出结果:0o361100

 

3. 数字算术运算和赋值运算

  3.1   数学算术运算

  数学算出运算共有7种,分别为 +、-、*、/(加、减、乘、除) %、**、//(取模余数、幂运算、取整除赋值运算符,整除的结果)

 1 # 数字算术运算
 2 # + - * /
 3 a, b, c = 20, 10, 0
 4 c = a + b
 5 print("a + b = %.2f" % c) # 输出结果:30.00
 6 
 7 c = a - b
 8 print("a - b = %.2f" % c) # 输出结果:10.00
 9 
10 c = a * b
11 print("a * b = %.2f" % c) # 输出结果:200.00
12 
13 c = a / b
14 print("a / b = %.2f" % c) # 输出结果:2.00
15 
16 # % ** //
17 c = a % b
18 print("a % b = ", c) # 取模(取余数)# 输出结果:0
19 
20 c = a ** b
21 print("a ** b = %d" % c) # 幂运算 # 输出结果:10240000000000
22 
23 c = a // b
24 print("a // b = %d" % c) # 取整除赋值运算符,整除的结果。# 输出结果:2

  3.2   数字赋值运算

  数学的赋值运算拆分为运算+赋值=结果。两步的运算结果合并成为一步。=、+=、-=、*=、/=(等于、加等于、减等于、乘等于、除等于)%=、**=、//=(取余等于、幂等于、取整除等于)

  举个例子:a = 100、b=50、a += b 可以拆分为(第一步:a + b = 150;第二步:赋值150赋值给a,a=150),最终变为a=150 b=50

  这里特别说明的是这种数字赋值表达式方式,在后面的循环体当中运用非常广泛。

 1 # 数字赋值运算(表达内容同上)
 2 # = += -= *= /=
 3 d, e, f = 20, 10, 0
 4 e += d
 5 print("e += d : ", e) # 输出结果:e += d :  30
 6 
 7 e += d
 8 print("e -= d : ", e) # 输出结果:e -= d :  50
 9 
10 e *= d
11 print("e *= d : ", e) # 输出结果:e *= d :  1000
12 
13 e /= d
14 print("e /= d : ", e) # 输出结果:e /= d :  50.0
15 
16 # %= **= //=
17 d %= e
18 print("d %= e : ", d) # 输出结果:d %= e :  20.0
19 
20 d **= e
21 print("d **= e : ", d) # 输出结果:d **= e :  1.125899906842624e+65
22 
23 d //= e
24 print("d //= e : ", d) # 输出结果:d //= e :  2.251799813685248e+63

 

4.   常用数学函数

  Python除了普通的加减乘除运算,还可以运算一些像三角函数,四舍五入等运算方式,有些需要调用出数学库,方式为import math。对于这些常用的数学函数列出如下:

  函:abs和fabs

    语:abs(x)和fabs(x)

      用:取绝对值

1 import math
2 # abs 和 math.fabs
3 # 作用:取绝对值
4 print(abs(-3.1412926))
5 print(math.fabs(-10))  # 这个与abs不同是如果是整数返回一个带一位小数的整数
6 # 输出结果:
7 # 3.1412926
8 # 10.0

  函:round、ceil、floor

    语:round(x,n)、ceil(x)、floor(x)

      用:四舍五入n为保留几位小数、向上取整、向下取整

1 # round、ceil、floor
2 # 作用:四舍五入、向上取整、向下取整
3 print(round(3.1415926, 4)) # 保留四位小数,如果舍位为0,返回四舍五入的整数
4 # 输出结果:3.1416
5 print(math.ceil(3.11415926)) # 向上取整
6 # 输出结果:4
7 print(math.floor(3.1415926)) # 向下取整
8 # 输出结果:3

  符:>、==、<、>=、<=

    用:大于、等于、小于、大于等于、小于等于,来逻辑比较两个值。返回为真假(True or False)

1 # > == < <= >=
2 # 作用:比较两个数字的大小关系,返回为真假
3 print(15 > 10) # 输出结果:True
4 print(15 < 10) # 输出结果:False
5 print(15 == 10) # 输出结果:False
6 print(15 >= 10) # 输出结果:True
7 print(15 <= 10) # 输出结果:False

  函:exp

    语:exp(x)

      用:取指数

1 # exp
2 # 作用:取指数
3 print(math.exp(50))
4 # 输出结果:5.184705528587072e+21

  函:log、log10、log2

    语:log(x,n)、log10(x)、log2(x)

      用:计算以n为底的对数(默认为2.71...)、计算以十为底的对数、计算以二为底的对数

1 # log、log10、log2
2 # 作用:对数计算方式
3 print(math.log(10, 10)) # 以几为底的对数,默认为2.718281828459045为底
4 # 输出结果:1.0
5 print(math.log10(10)) # 以10为底的log计算
6 # 输出结果:1.0
7 print(math.log2(10)) # 以2位底的log计算
8 # 输出结果:3.321928094887362

  函:max、min

    语:max(n1,n2,n3,....)、min(n1,n2,n3,....)

      用:求一组数中的最大值;求一组书中的最小值

1 # max、min
2 # 作用:大小值比较,返回为数字或者字符
3 print(max(12, 13, 14))  # 输出结果:14
4 print(min(12, 13, 14))  # 输出结果:12

  函:pow

    语:pow(base,n)

      用:计算以base为底的n次方

1 # pow
2 # 作用:幂运算 等于 **
3 print(math.pow(10, 2))  # 输出结果:100.0

  函:sqrt

    语:sqrt(x)

      用:对数值x进行开方运算

1 # sqrt
2 # 作用:开方运算
3 print(math.sqrt(4)) # 输出结果:2.0

  函:modf

    语:modf(x)

      用:返回x值的整数部分和小数部分,两部分数值符号与值相同,整数部分以浮点型表示

1 # modf
2 # 作用:返回值的整数部分与小数部分,两部分数值符号与值相同,整数部分以浮点型表示
3 print(math.modf(10.12))  # 显示为小数部分+整数部分
4 # 输出结果:(0.11999999999999922, 10.0)
5 print(math.modf(10.10))  # 显示为小数部分+整数部分
6 # 输出结果:(0.09999999999999964, 10.0)

  函:常用的三角函数:

  acos(x)   返回x的反余弦弧度值

  asin(x)   返回x的反正弦弧度值

  atan(x)   返回x的反正切弧度值

  atan2(y, x)   返回给定的 X 及 Y 坐标值的反正切值

  cos(x)    返回x的弧度的余弦值

  hypot(x, y)   返回欧几里德范数 sqrt(x*x + y*y)

  sin(x)    返回的x弧度的正弦值

  tan(x)    返回x弧度的正切值

  degrees(x)    将弧度转换为角度,如degrees(math.pi/2)

  radians(x)    将角度转换为弧度

 1 # 常用的三角函数 #
 2 # acos(x)    返回x的反余弦弧度值
 3 print(math.acos(0.5)) # 输出结果:1.0471975511965979
 4 # asin(x)    返回x的反正弦弧度值
 5 print(math.asin(0.5)) # 输出结果:0.5235987755982989
 6 # atan(x)    返回x的反正切弧度值
 7 print(math.atan(0.5)) # 输出结果:0.4636476090008061
 8 # atan2(y, x)    返回给定的 X 及 Y 坐标值的反正切值
 9 print(math.atan2(0.5, 0.5)) # 输出结果:0.7853981633974483
10 # cos(x)    返回x的弧度的余弦值
11 print(math.cos(0.5)) # 输出结果:0.8775825618903728
12 # hypot(x, y)    返回欧几里德范数 sqrt(x*x + y*y)
13 print(math.hypot(0.5, 0.5)) # 输出结果:0.7071067811865476
14 # sin(x)    返回的x弧度的正弦值
15 print(math.sin(0.5)) # 输出结果:0.479425538604203
16 # tan(x)    返回x弧度的正切值
17 print(math.tan(0.5)) # 输出结果:0.5463024898437905
18 # degrees(x)    将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
19 print(math.degrees(math.pi/2)) # 输出结果:90.0
20 # radians(x)    将角度转换为弧度
21 print(math.radians(90)) # 输出结果:1.5707963267948966

  函:pi、e

    语:

      用:这是两个数学常量分布别指的:π和常数e

1 # 两个数学常量 #
2 print(math.pi) # 输出结果:3.141592653589793
3 print(math.e)  # 输出结果:2.718281828459045

 

5.   常用的数学随机数函数

  在某些领域中(比如卡尔曼滤波等)数学随机数运用非常广泛,严格意义来讲,python提供的随机数并不是绝对意义的随机数,但是也经常被使用。同样计算这些随机数也需要条用python的随机数库,用import random的形式调用出来。

  函:choice

    语:choice()

      用:从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。

        函:range

          语:range(self, start [,end] [,step])

            用:这个特别要增加一个函数,这个函数和后面的list列表数据类型最大的区别是range函数是用来创建算术级序列的通用函数,类似于C语言中的数字,有且只能存放数值类型变量。其中start为其实值,end为结束值,step为步长,单元素或者默认状态下步长为1。

 1 import random
 2 # choice
 3 # 作用:从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数
 4 print(random.choice([0, 1, 2, 3, 4, 7, 8, 9, 100])) # 从一个数组里面随机拿出来一个数
 5 # 输出结果:0(随机结果)
 6 
 7 print(random.choice(["你好", "fucnk", "thomas"])) # 从一个数组里面随机拿出来一个字符串
 8 # 输出结果:你好(随机结果)
 9 
10 print(random.choice(range(5))) # range(5) = [0, 1, 2, 3, 4]
11 # 输出结果:0(随机结果)
12 
13 print(random.choice(range(10)) + 1) # 生成1到10之间的随机数
14 # 输出结果:8(随机结果)

  函:randrange

    语:randrange([start,] ,stop[, step])

      用:从一个结合范围当中按照某个步长来随机挑选,按照指定技术递增集合中选取一个随机数,这种方式类似于上面的choice(range())的形式。

1 # random.randrange([start,] ,stop[, step])
2 # 作用:从一个结合范围当中按照某个步长来随机挑选,按照指定技术递增集合中选取一个随机数
3 # start--指定范围的开始至,包含范围内
4 # stop--是定范围的结束,不包含在范围内
5 # step--递增基数,默认是1
6 print(random.randrange(1, 100, 5))  # 从0-99选取一个随机数,步长是5
7 print(random.randrange(100))  # 从0-99选取一个随机数,步长是1

  函:random.random  

    语:random.random()

      用:随机生成[0, 1)之间的小数,含0,不包括1

1 # random.random
2 # 作用:随机小数[0,1)
3 print(random.random())  # 15位的随机小数0-1之间

  函:normalvariate

    语:normalvariate(mu, sigma)

      用:mu为均值,sigma为方差;生成正态分布随机数。

1 # normalvariate
2 # 作用生成正态分布随机数,其中第一个为均值,第二个为方差
3 print(random.normalvariate(0, 1))

  函:shuffle

    语:shuffle(series)

      用:将序列的所有元素进行随机排序

1 # shuffle
2 # 作用:将序列的所有元素随机排序
3 list = [1, 2, 3, 4, 5, 6]
4 random.shuffle(list)
5 print(list)

  函:uniform

    语:uniform([start] [,stop])

      用:随机生成一个实数

1 # uniform
2 # 作用:随机生成一个实数
3 print(random.uniform(10, 20 )) # 范围[10, 20]

  函:seed

    语:seed(n)

      用:用种子的方法改变随机数生成器的种子,可以在条用其他随机函数之前调用此函数。这个方式有个特点规定好种子后数值不再改变了。

1 # seed
2 # 作用:seed()方法改变随机数生成器的种子,可以在调用其他随机模块函数之前条用次函数
3 random.seed(10)
4 print("Random number with seed 10 :", random.random())  # 生成同一个随机数
5 # 输出结果:0.5714025946899135

 

6.   其他补遗

 还有一种交互式赋值方式

1 num1 = 10
2 print(id(num1))  # 打印num1的地址
3 num2, num3 = 10, 20
4 print(num1, num2) # 交互式赋值方式
5 num4 = num5 = num6 = 30
6 print(num4, num5, num6) # 连续赋值的方式
7 print(type(num4)) # 打印属于那种类型变量
posted @ 2018-02-05 01:52  时海涛|Thomas  阅读(529)  评论(0编辑  收藏  举报