• 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)) # 打印属于那种类型变量
  • 相关阅读:
    Docker入门
    KMP算法
    spring boot整合Thymeleaf
    thymeleaf公共页面元素抽取
    入门oj 6492: 小B的询问
    入门oj 6451: The XOR Largest Pair之二
    入门oj 5499: 讲话模式
    把Windows CA根证书安装到iPhone
    笔记本电脑键盘状态助手KeyboardState
    开启Windows7多用户远程桌面
  • 原文地址:https://www.cnblogs.com/noah0532/p/8415642.html
Copyright © 2020-2023  润新知