• 数字


    简介:

      数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的对象。 

      Python 支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。 

    创建数字对象:

      相当于给变量赋值

    aInt = 1

    更新数字对象:

      相当于给数字对象重新赋值

    aInt += 1

    删除数字对象

    del aInt

    一、整型

    【1】布尔型

    ture、false

    【2】标准整数类型

      Python 的标准整数类型是最通用的数字类型。在大多数 32 位机器上,标准整数类型的取 值范围是-231 到 231-1,也就是-2,147,483,648 到 2,147,483,647。如果在 64 位机器上使 用 64 位编译器编译 Python,那么在这个系统上的整数将是 64 位 

    0101 84 -237 0x80 017 -680 -0X92

      如果八进制整数以数字“0”开始, 十六进制整数则以 “0x” 或“0X” 开始。 

    【3】长整型

      在一个整数值后面加个 L(大写或小写都可以),表示这个整数是 长整数。这个整数可以是十进制,八进制, 或十六进制。

    16384L -0x4E8L 017L-2147483648l 052144364L 
    299792458l 0xDECADEDEADBEEFBADFEEDDEAL -5432101234L

    二、双精度浮点数

      浮点数值通常都有一个小数点和一个可选的后缀 e(大写或小写,表示科学计数法)。在 e 和指数之间可以用正(+)或负(-)表示指数的正负(正数的话可以省略符号)。 

    0.0 -777.   1.6      -5.555567119   4.3e25   9.384e-23

    -2.172818   float(12)  1.000000001    3.1416   4.2E-10

    -90. 6.022e2  96e3 * 1.0

    三、复数 

    • 虚数不能单独存在,它们总是和一个值为0.0的实数部分一起来构成一个复数。
    • 复数由实数部分和虚数部分构成
    • 表示虚数的语法: real+imagj
    • 实数部分和虚数部分都是浮点数
    • 虚数部分必须有后缀j或J。   
    64.375+1j             4.23-8.5j         0.23-8.55j 
    1.23e-045+6.7e+089j      6.23+1.5j       -1.23-875J  
    0+1j           9.80665-8.31441J -.0224+0j

    【1】复数的内建属性

    属性

    描述

    num.real

    复数的实部

    num.imag

    复数的虚步

    num.conjugate() 

    复数的共轭复数
    a = 1-2.4j
    print(a.real)
    #1.0
    print(a.imag)
    #-2.4
    print(a.conjugate())
    #(1+2.4j)

    五、运算符

    【1】混合模式运算符

      当两个整数相加时, + 号表示整数加法, 当两个浮点数相加时, + 表示浮点数加法。字符串 A + 字符 串 B 并不表示加法操作, 它表示的是把这两个字符串连接起来, 生成一个新的字符串。 

    1.0+2.0
    #3.0
    'a'+'b'
    #ab

       注意:

      虽然我们不能让一个数字和一个字符串相加, 但 Python 确实支持不同的数字类型相加。 当一个整数和一个浮点数相加时, 系统会决定使用整数加法还是浮点数加法(实际上并不存在 混合运算)。

      首先,如果两个操作数都是同一种数据类型,没有必要进行类型转换。仅当两个操作数类 型不一致时, Python 才会去检查一个操作数是否可以转换为另一类型的操作数。如果可以, 转换它并返回转换结果。由于某些转换是不可能的,比如果将一个复数转换为非复数类型, 将 一个浮点数转换为整数等等,因此转换过程必须遵守几个规则。 

      要将一个整数转换为浮点数,只要在整数后面加个 .0 就可以了。 要将一个非复数转换为 复数,则只需要要加上一个 “0j” 的虚数部分。这些类型转换的基本原则是: 整数转换为浮 点数, 非复数转换为复数。 

    • 如果有一个操作数是复数, 另一个操作数被转换为复数。
    • 否则,如果有一个操作数是浮点数, 另一个操作数被转换为浮点数。
    • 否则, 如果有一个操作数是长整数,则另一个操作数被转换为长整数。
    • 否则,两者必然都是普通整数,无须类型转换。

     【2】算数运算符

      以a=10 ,b=20为例进行计算

    运算符描述实例
    + 两个对象相加 a + b 输出结果 30
    - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
    * 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
    / x除以y b / a 输出结果 2
    // 取整除 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
    % 取余 返回除法的余数 b % a 输出结果 0
    ** 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000

       

    【3】赋值运算符

    运算符描述实例
    = 赋值运算符 把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7

    【4】符合赋值运算符   

    运算符描述实例
    += 加法赋值运算符 c += a 等效于 c = c + a
    -= 减法赋值运算符 c -= a 等效于 c = c - a
    *= 乘法赋值运算符 c *= a 等效于 c = c * a
    /= 除法赋值运算符 c /= a 等效于 c = c / a
    %= 取模赋值运算符 c %= a 等效于 c = c % a
    **= 幂赋值运算符 c **= a 等效于 c = c ** a
    //= 取整除赋值运算符 c //= a 等效于 c = c // a

        

    【5】位运算符(只用于整数)

      Python 整数支持标准位运算:取反(~),按位 与(&), 或(|) 及 异或(^) 及左移(<<)和右 移(>>)。Python 这样处理位运算:

    • 负数会被当成正数的2进制补码处理。
    • 左移和右移 N 位等同于无溢出检查的 2 的 N 次幂运算: 2**N。
    • 对长整数来说, 位运算符使用一种经修改的 2 进制补码形式,使得符号位可以无限的向左扩展。

      取反(~)运算的优先级与数字单目运算符相同, 是所有位操作符中优先级最高的一个。 左移和右移运算的优先级次之,但低于加减法运算。与, 或, 异或 运算优先级最低。所有位运 算符按优先级高低列在表 。 

    位运算符 功能
    num1 << num2 
    Num1 左移 num2 位
    num1 >> num2
    Num1 右移 num2 位
    num1 & num2 num1 与 num2 按位 与
    num1 ^ num2  num1 异或 num2
    num1 | num2 num1 与 num2 按位 或 
       
    30 & 45
    #12
    30 | 45
    #63
    45 & 60
    #44
    45 | 60
    # 61
    ~30
    #-31
    60 >> 2
    #15
    30 ^ 45
    # 51

     六、内建函数和工厂函数

    【1】标准类型函数

    函数 描述

    cmp(a,b)

    (python3已经废除)

    比较a,b的大小

    如果a>b,返回1

    如果a=b,返回0

    如果a<b,返回-1

    str() 将数字转换成字符串
    type()

    返回数字对象的类型。 

    cmp(2,1)
    #1
    cmp(1,1)
    #0
    cmp(1,2)
    #-1
    str(1)
    #'1'
    type(1)
    #<class 'int'>

    【2】数字类型函数

      数值工厂函数总结 

    类(工厂函数) 描述
    bool(obj)

    返回obj对象的布尔值

    int(obj) 

    返回一个字符串或数值对象的整数表示

    long(obj)

    返回一个字符或数据对象的长整数表示 

    float(obj) 

    返回一个字符串或数据对象的浮点数表示

    complex(str) 
    complex(real,imag=0.0)  

    返回一个字符串的复数表示,或者根据给定的实数(及一个可选

    的虚数部分)生成一个复数对象。

    bool(1)
    #True
    bool(0)
    #False
    int(1)
    #1
    float(1)
    #1.0
    complex(1+2j)
    #(1+2j)

      数值运算内建函数总结

    函数 功能

    abs(num)

    返回 num 的绝对值

    coerce(num1, num2) 

    将num1和num2转换为同一类型,然后以一个元组的形式返回。

    divmod(num1, num2) 

    除法-取余运算的结合。返回一个元组(num1/num2,num1 %num2)。对浮点数和复数的商进行下舍入(复数仅取实数部分的商)

    pow(num1, num2) 

    取 num1 的 num2次方

    round(flt, ndig=0) 

    接受一个浮点数 flt 并对其四舍五入,保存 ndig位小数。若不提供ndig 参数,则默认小数点后0位 

      备注:round()仅用于浮点数。(整数也可以, 不过并没有什么实际意义) 

    •  abs()返回给定参数的绝对值。如果参数是一个复数,那么就返回math.sqrt(num.real2 +num.imag2)   
    abs(-1)
    #1
    abs(10.)
    #10.0
    abs(3-4j)
    #5
    • coerce(num1, num2) ,将num1和num2转换为同一类型,然后以一个元组的形式返回。python3已经废除
    coerce(1,2)
    #(1, 2)
    coerce(1.3, 134L)
    #(1.3, 134.0)
    coerce(1, 134L)
    #(1L, 134L)
    coerce(1j, 134L)
    #(1j, (134+0j))
    coerce(1.23-41j, 134L)
    #((1.23-41j), (134+0j))

    divmod()内建函数把除法和取余运算结合起来, 返回一个包含商和余数的元组。对整数来说,它的返回值就是地板除和取余操作的结果。对浮点数来说, 返回的商部分是math.floor(num1/num2),对复数来说, 商部分是 ath.floor((num1/num2).real)。 

    divmod(10,3)
    #(3, 1)
    divmod(3,10)
    #(0, 3)
    divmod(10,2.5)
    #(4.0, 0.0)
    divmod(2.5,10)
    #(0.0, 2.5)
    divmod(2+1j, 0.5-1j)
    #(0j, (2+1j))
    • 函数 pow()进行指数运算
    pow(5,2)
    #25
    • 内建函数 round()用于对浮点数进行四舍五入运算。它有一个可选的小数位数参数。如果不提供小数位参数, 它返回与第一个参数最接近的整数(但仍然是浮点类型)。第二个参数告诉 round 函数将结果精确到小数点后指定位数。 
    round(1)
    #1
    round(1.49999)
    #1
    round(1.49999,1)
    #1.5

     【3】仅用于整数的函数 

    函数 功能
    hex(num) 将数字转换成十六进制数并以字符串形式返回 
     oct(num)  将数字转换成八进制数并以字符串形式返回
    chr(num)

    将ASCII值的数字转换成ASCII字符,范围只能是0 <= num <= 255。

    ord(chr)  接受一个 ASCII 或 Unicode 字符(长度为1的字符串),返回相应的ASCII 或Unicode 值。 

      进制转换函数 

      Python还提供了两个内建函数来返回字符串表示的8进制和16进制整数。它们分别是 oct() 和 hex()。它们都接受一个整数(任意进制的)对象,并返回一个对应值的字符串对象。
      
    >>>hex(255)
        '0xff'
    >> hex(23094823l)
        '0x1606627L'
    >>> hex(65535*2)
        '0x1fffe'
    >>> oct(255)
        '0377'
    >>> oct(23094823l)
        '0130063047L'
    >>> oct(65535*2)
        '0377776'

      ASCII 转换函数 

      函数 chr()接受一个单字节整数值,返回一个字符串,其值为对应的字符。函数 ord()则相反,它接受一个字符,返回其对应的整数值。 

    >>> ord('a')
     97
    >>> ord('A')
    65
    >>> ord('0')
    48
    >>> chr(97)
    'a'
    >>> chr(65L)
    'A'
    >>> chr(48)
    '0'
     

  • 相关阅读:
    NOI Online 2020 提高组游记
    【HDU5840】This world need more Zhu
    CSP-S 2019 AFO记
    防错笔记
    关于Blog
    题解 【UER #6】逃跑
    动态规划杂题选记
    有趣计数题选做
    题解 [POI2012] Leveling Ground
    xioa han 带画家!
  • 原文地址:https://www.cnblogs.com/Jiangchuanwei/p/8477440.html
Copyright © 2020-2023  润新知