zoukankan      html  css  js  c++  java
  • 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

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Android开发 使用 adb logcat 显示 Android 日志
    【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410
    C语言 结构体相关 函数 指针 数组
    C语言 命令行参数 函数指针 gdb调试
    C语言 指针数组 多维数组
    Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用
    C语言 内存分配 地址 指针 数组 参数 实例解析
    CRT 环境变量注意事项
    hadoop 输出文件 key val 分隔符
    com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections
  • 原文地址:https://www.cnblogs.com/l0928/p/13227202.html
Copyright © 2011-2022 走看看