• Python 中的运算符


    算数运算符: +   -   *   /   //   %   **

    var1=3

    var2=4

    res=var1+var2  #加法

    res=var1-var2  #减法

    res=var1*var2  #乘法

    res=var1 / var2(结果为小数)

    res=var1//var2(地板除整除,只取结果的整数部分,若除数或被除数中有一个是小数则在结果后加上.0)

    res=var1%var2(取余)

    比较运算符:>   <    >=   <=   ==   != 

    比较运算符只会产生两种结果:True 真的,False 假的

    res=var1>var2

    res=var1<var2

    res=var1>=var2

    res=var1<=var2

    res=var1==var2

    res=var1!=var2

    赋值运算符: = ,  += , -= , *= ,  /=,   //=,   %=,   **=

    var=2    #  = 从右向左,将右侧的值赋值给左侧变量

    var1+=var2       #var1=var1+var2

    var1-=var2       #var1=var1-var2

    var1=var2       #var1=var1var2

    var1 / =var2       #var1=var1 / var2

    var1 // =var2       #var1=var1 // var2

    var1 %=var2       #var1=var1%var2

    var1**=var2       #var1=var1**var2

    成员运算符:(针对容器型数据)

    in 和not in

    (1)strvar='我的梦想是成为一名优秀的程序员'

       res='梦想' in strvar  #True

       res='程序员' not in strvar    #False

       res='是员' in strvar  #False   (字符串必须是连续的)

    (2)listvar=['my','dream','happy','sad']

       res='my' in listvar    #True

    (3)tuplevar=('my','dream','happy','sad')

       res='my' in tuplevar    #True

    (4)setvar={'my','dream','happy','sad'}

       res='my' in setvar    #True

    (5)dictvar={'Haci':'Lcx','Merry':'Hxl','Gina':'Yxc'}

      res='Haci' in dictvar    #True

      res='Lcx' in dictvar      #False ,   字典中只能取键,而不能取值

    身份运算符:

    is和 is not (检测两个数据在内存当中是否是同一个值)

    python3.6

    (1)整型:-5~正无穷内同值内存id相同

    res= 1000 is 1000    # True

    res=-6  is  -6       #False

    (2)浮点型:非负范围内同值内存id相同

    res=2.3  is  2.3  #True

    res=-2  is  -2    #False

    (3)布尔型:同值同内存id

       res=True  is  True    #True

      res=True  is False  # False

    (4)复数:实数+虚数永远不同 (只含正系数的虚数的条件例外)

    var1=2+3j

    var2=2+3j

    res=var1 is var2   #False

    (5)容器类型

    只有字符串和空元组是同值同id

    res=(1,2,3) is (1,2,3)   #False

    res=() is ()   #True

    逻辑运算符:

    and   or   not

    (1)and:逻辑与,全真则真,一假则假

    (2)or:逻辑或,全假则假,一真则真

    (3)not:逻辑非,真变假,假变真

    (4)短路逻辑:如果出现了短路效果,后面的代码不执行

       True or 表达式;False and 表达式

        #先用大脑算一下布尔值真假,是否出现短路情况,如果出现了直接返回当前值,没出现,继续向右执行;

      res=5 or 8  #5

    res=0 or 6  #6

    res=3 and 4   #4

    res=0 and 9  #0

    res=not(5 or 6) and 7  #not 5 and 7 =>False  and  7=>False

    按位运算符:&   |    ^    <<   >>   ~

    关于二进制的计算

    (1)按位与 &

    var1=19

    var2=15

    res=var1  &  var2    #3

    计算原理:

    19的二进制:   0000...10011

    15的二进制:   0000...01111

    按位与:           0000... 00011   ==>3

    (2)按位或 |

    var1=19

    var2=15

    res=var1  |  var2   #31

    19的二进制:   0000...10011

    15的二进制:   0000...01111

    按位或:           0000...11111 ==>31

    (3)按位异或:  ^  (两个值不一样,返回真,否则返回假)

    var1=19

    var2=15

    res=var1  ^  var2

    19的二进制:   0000...10011

    15的二进制:   0000...01111

    按位异或:       0000...11100=>28

    (4)左移<<

    左移相当于做乘法:5*2的n次幂

                    5                       0000...101                    

    res = 5 << 1 # 10          #0000...1010==>10

    res = 5 << 2 # 20          #0000...10100==>20

    res = 5 << 1 # 40          #0000...101000==>40

    (5)右移  >>

    右移相当于做除法:5*2的n次幂

             5                    0000 ...  101

    res=5>>1            #0000 ...  010  ==>2

    res = 5 >> 2         #0000 ...  001===>1

    (5)按位非~:(针对于补码进行操作,按位取反,包括符号位)

    按位非每一位都取反,包括符号位,求反码每一位除了符号位,都取反

    公式: -(n+1)

    var=~19

    原码:   0000 ... 10011

    反码:   0000 ... 10011

    补码:   0000 ... 10011

    按位非: 1111...01100

    反码:     1000...10011

    原码:     1000...10100   ===>-20

    var2=~(-22)

    原码:1000 ... 10011

    反码:1111 ... 01100

    补码:1111...01101

    按位非:0000...10010

    原码:0000...10010===>18

     

    总结:

    (1)各类运算符优先级:算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符>赋值运算符

    (2)个别运算符:优先级最高 ** 幂运算;优先级最低 =  赋值运算符;() 括号可以提升运算优先级

    (3)整体 一元运算符 > 二元运算符

    (4)同一层级:

        逻辑: () > not > and > or

        算数: 乘除 > 加减

        位运算符:~ > ( << >> ) > & > ^ > |

     

    res = 17>15 or 78<11 or 7 and 8 and not True is True

          =True  or  False  or 7  and  8  and  not  True is True

       =True  or  False  or  7  and  8  and  not  True

        =True  or  False or False

        =True

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    netcore一键部署到linux服务器以服务方式后台运行
    查找100-999之间的水仙花数
    shell创建数据库的脚本
    python打印九九乘法表的菱形实现
    c++一些重要的细节
    MySQL数据库基础学习笔记(二)
    MySQL数据库基础学习笔记(一)
    react-redux 的基本使用
    react-router-dom基本使用+3种传参方式
    从create-react-app 项目搭建开始
  • 原文地址:https://www.cnblogs.com/l0928/p/13227202.html
Copyright © 2020-2023  润新知