zoukankan      html  css  js  c++  java
  • 010 Python 运算符

    (1)算数运算符: + 、-、 *、 /(结果为小数) 、//、 %、 **。

    5  % 2 = 1
    -5 % 2 = 1 #-1 + 2
    5 % -2 = -1 #1 + (-2)
    -5 % -2 = -1
    num01 = 5
    num02 = 2
    print(num01 + num02) #7
    print(num01 - num02) #3
    print(num01 * num02) #10
    print(num01 / num02) #2.5
    print(num01 // num02) #2
    print(num01 % num02) #1
    print(num01 ** num02) #25

    print(5%2) #1
    print(-5%2) # -1 + 2 = 1
    print(5%-2) # 1 + (-2) = -1
    print(-5%-2) #-1

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

    num03 = 5
    num04 = 5
    print(num03 > num04) #False
    print(num03 < num04) #False
    print(num03 >= num04) #True
    print(num03 >= num04) #True
    print(num03 == num04) #Ture
    print(num03 != num04) #False

    (3)赋值运算符: = 、+=、 -=、 *=、 /=、 //=、 %=、 **= #从右向左,将右侧的值赋值给左侧的值;

    num05 = 52
    num06 = 12
    num05 += num06
    print(num05) #52 +12 = 64

    num05 -= num06
    print(num05) #52 - 12 = 40

    num05 *= num06
    print(num05) #52*12 =624

    num05 /= num06 #52 / 12 =4.3
    print(num05)

    num05 //= num06
    print(num05) #52 // 12 = 4

    num05 %= num06
    print(num05) # 52 %= 12 = 4

    num05 **= num06
    print(num05) #52**12 =390877006486250192896

    (4)成员运算符: in 和 not in (针对于容器型数据,在dict 判断时,是判断的字典的键,不判断值)

    mess01 = '王'
    mess03 = '刚'
    mess02 = "大王,请进!"
    mess04 = ['王刚','明天']

    print(mess01 in mess02) #True
    print(mess03 not in mess02) #True
    print(mess01 not in mess04) #True
    print('王刚' not in mess04) #False

    (5)身份运算符: is 和 is not (检测两个数据在内存当中是否是同一个值)

    #身份运算符  is   not is 主要判断内存地址是否一致
    #在python3.6 中,同一个文件(模块)中 -5~~正无穷,值相同,id 相同
    num07 = -52
    num08 = -52
    # print(num07 is num08) #False
    #float 非负数,值相同,id一致
    num09 = 2.2
    num10 = 2.2
    # print(num09 is num10) #True
    # print(-3.2 is -3.2) #True
    #bool 值相同,id 相同
    mess05 = True
    mess06 = True
    # print(mess05 is not mess06) # False
    #complex 实数+虚数 id永不相同,只有非负 虚数 值相同,id一致
    com01 = 5+2j
    com02 = 5+2j
    com03 = -2j
    com04 = -2j
    com05 = 2j
    com06 = 2j
    print(com01 is com02) #False
    print(com03 is com04) #False
    print(com05 is com06) #True

    #str 值相同,id 一致 空元祖id一致
    mess07 = "王"
    mess08 = "王"
    tup01 = ()
    tup02 = ()
    print(mess07 is mess08) #True
    print(tup01 is tup02) #True

    #其他容器list、set()、dict、() 任何情况id不同(除空元组)
    li01 = []
    li02 = []
    set01 = set()
    set02 = set()
    dic01 = {}
    dic02 = {}
    tup01 = (1,2)
    tup02 = (1,2)
    print(li01 is li02) #False
    print(set01 is set02) #False
    print(dic01 is dic02) #False
    print(tup01 is tup02) #False

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

    not :真变假,假变真
    print(not 1) #False
    print(not 0) #True

    and: 全真则真,一假则假;
    print('a' and 'b') #b
    print('a' and 'c') #c
    print(1 and 1) #1
    print(1 and 0) #0
    print(0 and 1) #0
    print(0 and 0) #0

    or : 全假则假,一真则真
    print(1 or 1) #1
    print(1 or 0) #1
    print(0 or 1) #1
    print(0 or 0) #0
    print('a' or 'b') #a
    print( 0 or 'b') #b

    逻辑短路:

    “True or 表达式”
    “False and 表达式”

    print(1 or "中国加油!") #1 “中国加油!” 不会打印
    print(0 or "中国加油!") #中国加油

    print(1 and "中国加油!") #中国加油
    print(0 and "中国加油!") #中国加油

    逻辑运算优先级;() > not > and > or

    mes01 = 11>22 or 23<23 and not 0 and 5243 > 312 or not 33
    # False or False and not 0 and True or not 33
    # False or False and True and True or False
    # False or False and True or False
    # Fales or False or False
    # Fales
    print(mes01) #Fales

    (7)位运算符: & 、|、 ~、 ^、 <<、 >> :对数据的二进制进行操作

    • & 按位与:双1 为1 ,其他为0

    • | 按位或:逢1为1,双0为0

    • ^ 按位异:两值相同为0(False),不同为1(True)

    • << 左移:相当于乘法,值 * 2 的n次幂

    • >> 右移,相当于除法, 值// 2的n次幂
    • ~ 按位非:公式 -(n+1),根据值的二进制补码运算,安位取反,包括符号位

    #& :按位与  双1为1,其他为0
    num11 = 21
    num12 = 12

    print(num11 & num12) #4
    # num11:00010101
    # num12:00001100
    # 00100 4

    #| :按位或 逢1为1,双0为0
    # print(num11 | num12) #29
    # num11:00010101
    # num12:00001100
    # 00011101 #29
    # print(0b11101) #29

    #^ 按位异 ,两值相同为0(False),不同为真
    print(num11 ^ num12) #25
    # num11:00010101
    # num12:00001100
    # 00011001 #
    print(0b11001) #25

    #<< 左移 相当于乘法,值 乘以 2的n次幂;n代表位移的个数
    num13 = 2
    print(num13<<2) #2*2**2 = 8
    print(num13<<3) #2*2**3 = 16
    print(num13<<4) #2*2**4 = 32

    #000010
    #001000
    #010000
    print(0b10000)

    #>> 右移 做除法,值 // 2的n次幂,n代表位移的个数
    num14 = 10
    print(num14 >> 1 ) #5
    print(num14 >> 2 ) #2
    print(num14 >> 3 ) #1
    #001010
    #000101
    #000010
    #000001

    #~ 按位非 根据值的二进制补码运算,安位取反,包括符号位
    #公式:-(n+1)
    num15 = 20
    print(~num15) #-21
    #原码:0000...10100
    #反码:0000...10100
    #补码:0000...10100
    # 1111...01011
    # 1000...10101 #-21
    print(0b10101)

    num15 = -6
    print(~num15) #5
    #原码:1000...110
    #反码:1111...001
    #补码:1111...010
    # 0000...101 #5

    (4) 其他运算符 算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符 赋值运算符是最后算完进行赋值,做收尾工作的.

    python运算符符号注意点
    算数运算符 +、-、*、/、//(取整除)、%(取余)、**(幂运算)、 / 运算结果为:float
    位运算符 & :按位与 | :按位或 ^:按位异 ~:按位非 << 左移 >> 右移 优先级 (<<或 >> ) > & > ^ > |
    比较运算符 > 、<、 >=、<=、==、!= 比较运算符只会产生两个结果:True、False;== 比较两个值是否相等 != 比较两个值是否不同;
    身份运算符 is 、not is is 和 is not 用来判断内存地址是否相同
    成员运算符 in 、not in(结果:True or False) in 或 not in 判断某个值是否包含在(或不在)一个容器类型数据当中;
    逻辑运算符 not 、and 、or 优先级 () > not > and > or
    赋值运算符 =、+=、-=、*=、/=、//=、%=、**= #从右向左,将右侧的值赋值给左侧的值;a += 1 => a = a+1



  • 相关阅读:
    asp.net 启动关闭iis
    vue 界面关闭触发事件 ---实例销毁之前调用
    ElmentUI 设置禁止点击遮罩关闭 el-dialog 弹窗
    C#反射
    SQL Server 创建游标(cursor)
    文件解压缩
    文件流操作
    Linq查询
    C#线程 多线程 进程
    匿名类型和反射
  • 原文地址:https://www.cnblogs.com/VajraBoy/p/13226311.html
Copyright © 2011-2022 走看看