zoukankan      html  css  js  c++  java
  • (11)运算符(优先级)


    (一)算数运算符: + - * / // (取整)%(取余) **(幂运算)

     加减乘除就不说了,和数学当中的一样,这里重点说下//,%和**

     (1)// (取整数) 两个数在进行地板除的时候,有一个数是小数,就在最后的结果上加.0

    var1 = 10
    var2 = 5
    var3 = 3.5
    res1 = var1 // var2
    res2 = var1 // var3
    print(res1)
    print(res2)
    
    执行结果
    2
    2.0
    

        (2)% 取余

    res1 = 10 % 3.5
    res2 = 99 % 7
    res3 = -99 % 7
    res4 = 99 % -7
    print(res1)
    print(res2)
    print(res3)
    print(res4)
    

     执行结果 

    3.0
    1
    6
    -6
    
    # 再来看下执行结果,是不是一脸懵逼,小学数学是不是感觉白学了,想了半天之后.....瞎说,小学老师可不教这个,算了,不卖关子了
    第一个和第二个执行结果应该都没问题
    第三个 :先算99%7 = 1,除数是负数,在余数前加上-号,然后加上被除数,所以结果是 -1+7 = 6
    第四个 :先算99%7 = 1,被除数是负数,在被除数前加上-号,然后加上余数,所以结果是 1-7 = -6
    双击6666了..............老铁
    (3) ** 幂运算
    print(2**3)
    print(4**3)
    
    执行结果:
    8
    64

    (二)比较运算符: > < >= <= == !=

    # 比较运算符只会产生2个结果  要么True 要么False
    var1 = 15
    var2 = 18
    res = var1 > var2
    print(res) # False
    res = var1 < var2
    print(res) # True
    res = var1 >= 15  # 只要满足一个条件即为真
    print(res) # True
    res = var1 <= 15  
    print(res) # True
    res = var1 == var2  # ==是判断两个值是否相等(is是判断两个元素id值是否一致,返回True或False)
    print(res) # False
    res = var1 != var2  # 不等于 
    print(res) # True

    (三)赋值运算符: = += -= *= /= //= %= **=

    var1 = 9
    var2 = 5
    res = var1
    print(res)
    var1 += var2  # var1 = var1 + var2
    print(var1)
    var1 -= var2  # var1 -= var2
    print(var1)
    var1 *= var2  # var1 *= var2
    print(var1)
    var1 /= var2  # var1 = var1 / var2
    print(var1)
    var1 //= var2  # var1 = var1 // var2
    print(var1)
    var1 %= var2  # var1 %= var2
    print(var1)
    var1 **= var2  # var1 **= var2
    print(var1)
    
    执行结果
    9
    14
    9
    45
    9.0
    1.0
    1.0
    1.0
    
    
    

    (四)成员运算符: in 和 not in (针对于容器型数据),判断某个元素在不在某个容器里面

    #(1)str  字符串需要是一个连续的片段
    strvar = "如果遇到你是一种错,我宁愿一错再错"
    res1 = "你" in strvar
    res2 = "遇到" not in strvar
    res3 = "我一" in strvar
    print(res1)   # True
    print(res2)   # False
    print(res3)   # False
    #(2)list tuple set
    listvar = ["周全","陈鹏","陈根基"]
    res = "周全" in listvar
    print(res) # True
    tuplevar = "王新元","叶欣荣","秋波好","刘鹏程"
    res = "叶欣荣" not in tuplevar
    print(res) # False
    setvar = {'周立飞','高辉'}
    res =  "高辉" in  setvar
    print(res) # True
    #(3)dict  注意 : 判断的是键 不是值
    dictvar = {"zdx":"无用","gss":"石阡","mlh":"杜十娘"}
    res = "杜十娘" in dictvar
    res = "mlh" not in dictvar  # True
    print(res)
    
    

    (五)身份运算符: is 和 is not (检测两个数据在内存当中是否是同一个值,返回True或False)

    var1 = 56
    var2 = 56
    res1 = var1 == var2  # (判断两个值是否相等)
    res2 = var1 is var2  # (判断两个值得地址是否相等)
    res3 = var1 is not var2
    print(res1)
    print(res2)
    print(res3)
    执行结果
    True
    True
    False        

     (六)逻辑运算符: and or not

    # (1)and 逻辑与
    # 全真则真,一假则假
    res1 = True and True
    res2 = False and True
    res3 = False and False
    res4 = True and False
    print(res1) # True
    print(res2) # False
    print(res3) # False
    print(res4) # False
    # (2)or 逻辑或 # 全假则假,一真则真 res5 = True or True res6 = True or False res7 = False or True res8 = False or False print(res5) # True print(res6) # True print(res7) # True print(res8) # False
    #(3)not 逻辑非 相当于取反 res9 = not True res10 = not False print(res9) # False print(res10) # True # (4)逻辑短路 ''' False and 布尔 在and左边如果时False 逻辑短路 右侧不执行 True or 布尔 在or左边如果是True 逻辑短路 右侧不执行 在开发当中 ,当成"开关"使用 ''' False and print(123) # 逻辑短路 # False True or print(456) # 逻辑短路 # True True and print(789) # 789
    # 逻辑运算符的优先级 () > not > and > or 括号的优先级是最高的

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

    (1)按位与 &,两者都有,返回真
    var1 = 19
    var2 = 15
    res = var1 & var2
    print(res) # 3
    """
    	000000010011
    	000000001111
    	000000000011  # 3
    """
    (2)按位或 | 只要一个有,返回真
    res = var1 | var2
    print(res) # 31
    '''
    	000000010011
    	000000001111
    	000000011111  # 31
    '''
    (3)按位异或 ^ "如果两者不相同,返回真,两者相同返回假
    res = var1 ^ var2
    print(res)  # 28
    '''
    	000000010011
    	000000001111  
        000000011100 # 28
    '''
    (4)<<  相当于 5 乘以 2的2次幂
    res = 5 << 2   #  20
    res = 4 << 3  # 4乘以2的3次幂
    print(res)  # 32
    """
    000000101  #  相当于101向左移动了2个二进制位
    000010100  #  20
    """
    (5)>>  相当于 5 除以 2的1次幂
    res = 5 >> 1
    print(res)  # 2
    """
    0000101 # 相当于101向右移动了1个二进制位
    0000010  # 2
    """
    (6)~ 按位非 (针对于补码来进行操作 ,连符号位都要改变) 公式 -(n+1)
    res = ~19
    print(res)  # -20
    """
    000000000010011 (补码)
    111111111101100 (按位非-->取反作为新的补码计算)
    
    111111111101100  (给补码求原码)
    100000000010011  (反码+1)
    100000000010100  (原码)  => -20
    按位非操作的是补码,如果实在记不住就记住公式: -(n+1)
    """
    所有运算符的优先级:
    小括号的优先级最高 () 
    ** 符号优先级最高
    =  符号优先级最低
    乘,除 > 加减
    () > not > and > or 
    (<< >> ) > & > ^ > |
    除此之外剩下的运算符参考以下:
    算术运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
    赋值运算符单独拿出来 , 用来把最后的结果进行赋值的

    练习: 计算 4>5 and 5 <9>5<3 or 1>2 and 3<=3的结果

    相当于: 4>5 and (5 <9 and 9 >5and 5<3) or 1>2 and 3<=3

        False and False or False and True

        False

  • 相关阅读:
    find命令的高级用法之print0及depth
    shell中的单引号和双引号的区别
    基于apache的虚拟主机
    duilib禁止標題欄雙擊放大窗口
    sqlite查询问题,由字母大小写敏感引起
    问题记录,Release模式和Debug运行效果不一样,Release必须加延时
    子函数内malloc分配内存,论如何改变指针参数所指内存,二级指针、三级指针的应用
    如何具体分配一大块堆内存中的各个部分、如何指针转化为地址、如何求指针间地址偏移量(谈谈最近遇到的一个坑爹的接口需求)
    C++ GUID和string转化函数【转载】
    第一次做C++项目的一点小总结
  • 原文地址:https://www.cnblogs.com/lyj910313/p/10798223.html
Copyright © 2011-2022 走看看