• 算数运算符、比较运算符、赋值运算符、成员运算符、身份运算符、逻辑运算符、位运算符


    1、算数运算符(+、-、*、/、//、%、**)

    (1)+、-、*、/   (注意:除法运算的出来的结果是float类型,除不尽的情况下保留15-18位小数

    # (1) + 运算
    a = 10
    b = 20
    print(a+b) # 30
    
    # (2) - 运算
    print(a - b) # -10
    
    # (3) * 运算
    print(a*b) # 200
    
    # (4) / 运算  注意:除法运算的出来的结果是float类型,除不尽的情况下保留15-18位小数
    print(10/5) # 2.0
    print(5/10) # 0.5
    print(10/3) # 3.3333333333333335

    (2)//(地板除,保留整数)、%(取余数)、**(次幂计算)  注意:在取余运算中,若除数或者被除数只要有一个是浮点数,则返回浮点数。当被除数小于除数时,结果直接取被除数就好

    # (5) // 运算 (地板除,直接取结果的整数部分
    res1 = 5//3.0
    print(res1,type(res1)) # 1.0 <class 'float'>  
    res2 = 5//4
    print(res2,type(res2)) # 1 <class 'int'>
    res3 = 5//6
    print(res3,type(res3)) # 0 <class 'int'>
    
    # (6) % 运算  (取余) 注意:当被除数小于除数时,结果直接取被除数就好
    res4 = 5%4
    print(res4,type(res4)) # 1 <class 'int'>
    res5 = 5%5
    print(res5,type(res5)) # 0 <class 'int'>
    res6 = 5%6
    print(res6,type(res6)) # 5 <class 'int'>
    res7 = 5%10
    print(res7,type(res7)) # 5 <class 'int'>
    print(10%-3) #-2 1+(-3)=-2 #当除数或者被除数有一方为负数时
    print(-10%3) #2 -1+3 =2
    # (7) ** 运算
    res8 = 7**2
    print(res8) # 49
    res9 = 4**-1
    print(res9) # 0.25

    2)比较运算符:>、>=、<、<=、==、!=(比较运算符结果均为bool值)

    # (1) > 运算
    print(20>10) # True
    print(20>20) # False
    
    # (2) >= 运算
    print(20>=20) # True
    print(30>=20) # True
    
    # (3) < 运算
    print(10<20) # True
    print(20<20) # False
    
    # (4) <= 运算
    print(20<=20) # True
    print(10<20) # True
    
    # (5) == 运算  判断两个值是否一样
    print(20 == 20) # True
    print(19 == 20) # False
    print("值相等"=="值相等") # True
    
    # (6) != 运算 判断两个值不一样
    print(20!=19) # True
    print(20!=20) # False
    print("我是1"!="我是2") # True

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

    # (1) = 赋值
    a = 10 # 将10赋值给a
    
    # (2) += 运算
    a = 10
    b = 20
    a += b
    print(a) # 30  将a和b相加后赋值给a
    
    # (3) -= 运算
    a = 10
    b = 20
    a -= b
    print(a) # -10  将a减去b后再赋值给a
    
    # (4) *=运算
    a = 10
    b = 20
    a *= b
    print(a) # 200  将a和b相乘后再赋值给a
    
    # (5) /= 运算
    a = 10
    b = 20
    a /= b
    print(a) # 0.5 将a除b的结果再赋值给a
    
    # (6) //= 运算
    a = 10
    b = 20
    a //= b
    print(a) # 0 将a除b的整数部分再赋值给a
    
    # (7) %= 运算
    a = 10
    b = 20
    a %= b
    print(a) # 10
    
    # (8) **=运算
    a = 10
    b = 2
    a **= b
    print(a) # 100 

    (4)成员运算符:in、not in 成员运算符仅针对于容器类型(返回值均为bool值)

    s1 = "我有一个大家庭"
    list1 = ["","一个","","家庭"]
    tuple1 = ("","一个","","家庭")
    set1 = {"","一个","","家庭"}
    dict1 = {"":"一个","":"家庭"}
    print(""in s1) # True
    print(""in list1) # False
    print("" in s1) # True
    print("" in tuple1) # False 对于list、tuple、set、dict来说,必须是连续的字符来判断
    print("家庭" in set1) # True
    print("家庭" in dict1) # False 对于字典来说,判断的值须是字典的key
    print("" in dict1) # True

    (5)身份运算符:is、is not  (判断两个值的id是否一样,返回值均为bool值)

    a = 20
    b = 20
    print(a is b,id(a),id(b)) # True 1554285264 1554285264
    
    a = -10
    b = -10
    print(a is b,id(a),id(b)) # False 2903910697712 2903910697456
    
    a = "我是一个字符串"
    b = "我是一个字符串"
    print(a is not b,id(a),id(b)) # False 2157711342296 2157711342296

    (6)逻辑运算符:not、and、or

       6.1) 运算优先级顺序:() > not > and > or

    # (1) not 运算:非运算
    a = 10
    print(not a) # False
    
    # (2) and 运算:与运算,须式子里的条件都为真,都真为真,一假为假
    print(8 and 9) # 9
    print(0 and 9) # 0
    print(3<4 and 5<4) # False
    print(3<4 and 5<6) # True
    
    # (3) or 运算:或运算,式子中有一个条件为真则是真,一真为真,都假为假
    print(8 or 9) # 8
    print(0 or 9) # 9
    print(3<4 or 5<4) # True
    print(3>4 or 5>6) # False
    
    res = 3 < 4 and False or 7 > 8 and True and (3 and 8)
    # True and False or False and True and True
    #False or False
    # False
    print(res) # False

      6.2) 短路原则:

            如果在and运算中,and前面的条件已经为False了,则值一定为False。在or运算中,如果or前面的条件为True,则结果一定为True

            出现了短路运算,后面的代码就不执行了

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

    # (1) & 按位与运算:将参与运算的值转为二进制,如果两个值对应的数都为1,则结果对应的值为1,否则为0
    a = 5 # 二进制为 000...00101
    b = 3 # 二进制为 000...00011
            #   a&b 000...00001
    print(a&b) # 1
    
    # (2) | 按位或运算:只要对应的两个二进制有一个是1时,结果位就为1,否则为0
    a = 5 # 二进制为 000...00101
    b = 3 # 二进制为 000...00011
             #a|b    000...00111
    print(a|b) # 7
    
    # (3) ^ 按位异或运算符:当两个值对应的二进制一样时,结果为0,否则为1
    a = 5 # 二进制为 000...00101
    b = 3 # 二进制为 000...00011
             # a^b  000...00110
    print(a^b) # 6
    
    # (4) << 左移:值的二进制左移若干位,高位丢弃,低位补0,左移相当于做乘法,值*2的n次幂
    a = 5<<4
    """
    5的二进制为 000...00101,向左移4位,000...01010000得到80,按照公式5*2^4=80
    """
    print(a) # 80
    
    # (5) >> 右移 值的二进制右移若干位,右移相当于除法,值//2的n次幂
    a = 5>>2
    """
    5的二进制为 000...00101,向右移2位,000...00001得到1,按照公式5//2^2
    """
    print(a) # 1
    
    # (6) ~ 按位非运算符,针对于原值的补码操作,按照原值的补码取反,包括符号位得到按位非的原码。公式 -(n+1)
    a = ~5
    """
    5的二进制为 000...00101,
    按位非码为  111...11010
    按位非反码  111...11001,
    按位非原码  100...00110
    得-6
    """
    print(a)
    
    a = ~(-5)
    """
    -5的二进制为100...00101,-5的反码为111...11010,-5的补码为111...11011
    得按非位的补码为000...00100
    得按非位的反码为000...00100
    得按非位的原码为000...00100
    得4
    """
    print(a) # 4

    (8)总结

    个别运算符:优先级最高的是**运算

                         优先级最低的是=赋值运算

                       ()可以提升优先顺序

    整体:一元运算符>二级运算符

            一元运算符:同一时间只操作一个运算符

           二元运算符:同一时间操作两个运算符

    同一层级:

                   算术:乘除>加减

                   逻辑:()>not>and>or

                   位运算:(<<、>>)>&>^>|

    其他情况:算术>位>比较>身份>成员>逻辑(算位比身成逻)

  • 相关阅读:
    error C4430: missing type specifier int assumed. Note: C++ does not support defaultint 解决方法
    A performance evaluation of local descriptors——局部描述子评估译文(1,2,...)
    global mapper裁剪DEM文件的方法
    直方图学习笔记
    vc++如何将客户区存为bmp【zz】
    处理tiff格式dem数据的方法——输出xyz坐标
    处理tiff格式dem数据的方法——输出txt形式高程信息
    我的社区成立了
    Closed socket connection for client /39.103.162.230:56100 (no session established for client)
    Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)
  • 原文地址:https://www.cnblogs.com/fdsimin/p/12827279.html
Copyright © 2020-2023  润新知