zoukankan      html  css  js  c++  java
  • 03-02python运算符

    运算符

    算术运算符

    运算符 描述 实测
    + 加:两个对象相加 1+1=3
    - 减:第一个数减去第二个数 1-1=0
    * 乘;两个对象相乘 1*1=1
    / 除;第一个数除以第二个数 1/1=1
    ** 幂:返回x的y此幂 10**20 10的20次方
    // 取整除:返回商的整数部分 9//2=4.5取整就是4
    % 取模:返回除法的余数 9%2=4.5无法整除返回为1
    9.2%2=1.1999999999999993详情参考Python中的取模运算

    算术运算符只能对int和float做运算
    自然除就是我们正常理解的数学计算,取整除是取结果的整数部分
    在python3中,所有的除法都是自然除,返回的都是float;python2中的除法都是取整除,返回的都是int

    例7:运算
    In [22]: 1 + 1
    Out[22]: 2
    
    In [23]: 1 + 1.2    # 会隐式转换为float进行计算
    Out[23]: 2.2
    
    In [24]: type(1 + 1.2)
    Out[24]: float
    
    例8:python2与python3除法区别
    In [25]: 3 / 2   # python3自然除
    Out[25]: 1.5
    >>> 3 / 2        # python2整除
    1
    
    >>> float(3) / 2   # python2中自然除的方法
    1.5
    
    >>> 5.0 / 2    # python2中自然除的方法
    2.5
    
    例9:python3的除法,返回全部都是float
    In [27]: type(4/2)                                                                                                                                                               
    Out[27]: float
    

    比较运算符

    • >:大于
    • <:小于
    • ==:等于
    • !=:不等于,python2中有<>不等于的写法,但是在python3中已废弃
    • >=:大于或等于
    • <=:小于或等于

    注意:比较运算的返回值都是bool类型

    例9:比较运算符
    In [27]: 3 > 5
    Out[27]: False
    
    In [28]: 5 > 3
    Out[28]: True
    
    In [29]: 5 != 3
    Out[29]: True
    

    逻辑运算符

    • and:与
    • or:或
    • not:非

    逻辑运算符的操作数都是bool类型或者可以隐式转换成bool类型的类型,返回值都是bool类型

    例10:逻辑运算符
        逻辑运算符的操作数都是bool类型或者可以隐式转换成bool类型的类型,返回值都是bool类型
    
        In [30]: True and False    # 双方都必须为真
        Out[30]: False
    
        In [31]: True or False    # 需要一方为真就返回True
        Out[31]: True
    
    例11:逻辑运算符经常用作短路操作; 短路操作基本不会用到not
        In [32]: def true():
            ...:     print('true')
            ...:     return True
            ...: def false():
            ...:     print('false')
            ...:     return False
            ...:
        # or当第一个为真后面的就不执行了, 如果第一个为False则会继续执行后面的,如果都执行失败,则返回Flase, 但只要一个成功就返回True
        In [29]: true() or false()                                                                                                                                           
        true
        Out[29]: True
    
        In [30]: false() or true()                                                                                                                                                       
        false
        true
        Out[30]: True
    
        In [34]: true() and true()        # and指定前面为true然后继续执行后面的, 如果都为true, 就返回true
        true
        true
        Out[34]: True
    
        In [36]: true() and false()    # and先执行第一个函数返回为true,继续执行第二个函数, 如果第二个函数为false就返回false
        true
        false
        Out[36]: False
    
        In [37]: false() and true()
        false
        Out[37]: False
    
        该例子可以拆分两个部分:
            1、是否执行了
            2、返回的结果
    
        短路操作:从左到右执行, 当已经有结果的时候, 将停止计算, 提前返回
            也就是说, 当判断式已经确定时, 不再继续处理后续表达式。 && 在失败时中断, ||在成功时中断。
    
    例12:逻辑计算
        # 0为false
        # 整数都为true
        # None为false
        * 空列表、空元组等都是false
        In [32]: bool(0)                                                                                                                                                                 
        Out[32]: False
    
        In [33]: bool(2)                                                                                                                                                                 
        Out[33]: True
    
        In [35]: bool(None)                                                                                                                                                               
        Out[35]: False
    
    
        In [38]: 0 and 1
        Out[38]: 0
    
        In [39]: 0 and True
        Out[39]: 0
    
        In [40]: None and True
    
        In [41]: True and None
    
        In [42]: 1 and True
        Out[42]: True
    

    成员运算符

    和集合类型相关,在集合类型时会介绍

    身份运算符

    和面向对象相关,在面向对象时会介绍

    位运算符

    • <<:左移
    • >>:右移
    • &:按位与
    • |:按位或
    • ^:按位取反
      一般用在网络底层开发中,用的非常少
      位运算符是直接操作二进制的

    运算符优先级(当运算符在一起运算时)

    • 乘法运算比取模运算优先级要高
    • 算术运算 > 比较运算 > 逻辑运算
      • 可以通过括号改变优先级,所以一般不确定的要其优先级高则直接用括号
    • 拿不准或者表达式比较复杂的适合,直接使用括号来决定优先级
    例13:运算符的优先级
        In [43]: 3 + 1 * 4
        Out[43]: 7
    
        In [44]: 3 * 4 ** 2
        Out[44]: 48
    
        In [45]: 3 * 4 % 3    # 乘法运算比取模运算优先级要高
        Out[45]: 0
    
        In [50]: 3 - 4 % 2
        Out[50]: 3
    
    例14:比较运算与逻辑运算
        In [51]: 3 > 5 and 5 > 3
        Out[51]: False
    
        In [52]: 3 + 6 > 7
        Out[52]: True
    
        算术运算 > 比较运算 > 逻辑运算
        可以通过括号改变优先级
    

    赋值运算符(比较特殊)

    上述运算符都会返回结果,而赋值运算符是不会返回结果的
    **参考如下实例,一句话概括赋值运算符:把右边计算的结果赋值给左边
    赋值运算符是可以和算数运算符一起使用的

    例15:赋值运算,把右边的值赋给左边,如果右边是个表达式,它会进行计算
        In [53]: i = 3 + 58
    
        In [54]: i
        Out[54]: 61
    
        In [55]: i /= 5
    
        In [56]: i
        Out[56]: 12.2
    
    例16:赋值运算符和算数运算符一起使用
        In [36]: i = 8                                                                                                                                                                   
    
        In [37]: i += 3                                                                                                                                                                  
    
        In [39]: i                                                                                                                                                                       
        Out[39]: 11
    
  • 相关阅读:
    700. Search in a Binary Search Tree
    100. Same Tree
    543. Diameter of Binary Tree
    257. Binary Tree Paths
    572. Subtree of Another Tree
    226. Invert Binary Tree
    104. Maximum Depth of Binary Tree
    1、解决sublime打开文档,出现中文乱码问题
    移植seetafaceengine-master、opencv到ARM板
    ubuntu16.04-交叉编译-SeetaFaceEngine-master
  • 原文地址:https://www.cnblogs.com/cishi/p/12942149.html
Copyright © 2011-2022 走看看