zoukankan      html  css  js  c++  java
  • python运算符

    一 判断类型 isinstance

    语法一

    isinstance(要判断的数据,要判断的类型)

    如果该数据是这个类型,返回True,反之返回False

    res = isinstance(111,int)

    res = isinstance([],tuple)

    语法二

    isinstance(要判断的数据,(类型1,类型2,类型3))

    如果该数据在后面的类型元组中,返回True,反之返回False

    res = isinstance('你好',(int,float,bool,tuple,str))
    res = isinstance({'a','b','c'},(int ,float,list,tuple ,str) )
    print(res)

    二 .运算符

    1.1算数运算符

    var1 = 3
    var2 = 5
    res = var1 + var2
    print(res) 
    
    # - 
    var1 = 3
    var2 = 5
    res = var1 - var2
    print(res) 
    
    # *
    var1 = 3
    var2 = 5
    res = var1 * var2
    print(res) 
    
    # / 结果一定是小数
    var1 = 3
    var2 = 5
    res = var1 / var2
    res = 6 / 2
    print(res) 
    
    # // 地板除 
    """被除数 ÷ 除数 = 商"""
    res  = 6 // 2
    res = 7 // 100
    """如果被除数或者除数身上有小数,在得到正常结果之后,加上.0"""
    res = 7.0 // 3
    print(res)
    
    
    # % 取余
    """
    先正常算出余数,如果被除数身上有符号,那么该余数身上补负号和除数相加
    如果被除数或者除数身上都有符号,直接算出余数,然后前面套上负号即可;
    """
    res = 7 % 4
    res = -7 % 4  # -3 + 4 = 1
    res = 7 % -4  # 3 + (-4) = -1
    res = -7 % -4 # -3
    res = -91 % 8 # -3 + 8 = 5
    res = 91 % -8 # 3 + (-8) = -5
    res = -91 % -8# -3
    print(res)
     
    # ** 幂运算
    res = 3 ** 40
    print(res)
    View Code

    1.2比较运算符

    """比较运算符只能得到两个结果,要么是True,要么是False"""
    res = 5 > 3  # True
    res = 6 <= 6 # True
    res = 6 == 7 # False
    res = 6 != 7 # True
    
    #注意点 : == 符号
    if 5 == 5:   # 5 = 5 errror
        print(1)
    View Code

     1.3 身份运算符 is 和 is not(检测链各个数据在内存当中是否是同一地址)

    # 1.Number类型
    # 整型 -5~正无穷
    var1 = 15
    var2 = 15
    print(id(var1),id(var2))
    print(var1 is var2)
    
    # 浮点型 非负数
    var1 = 4.5
    var2 = 4.5
    print(var1 is var2)
    
    # 复数 (实数+虚数 永不相同,只有虚数的情况下例外)
    var1 = 4 + 90j
    var2 = 4 + 90j
    print(var1 is not var2)
    print(4j is 4j)
    
    # 布尔型
    var1 = True
    var2 = False
    print(var1 is not var2)
    
    # 2.容器类型
    # str 和 空元祖 在值相同的情况下,地址相同
    var1 = ""
    var2 = ""
    var1 = (1,)
    var2 = (1,)
    print(var1 is var2)
    # 剩下的容器永不相同
    var1 = [1,2]
    var2 = [1,2] 
    print(var1 is var2)
    View Code

    1.4 逻辑运算符: and or not

    #and 逻辑与    全真则真,一假则假
    
    res = True and True # True
    res = True and False # False
    res = False and True # False
    res = False and False# False
    print(res)
    
    # or 逻辑或 一真则真,全假则假
    
    res = True or True # True
    res = True or False # True
    res = False or True # True
    res = False or False# False
    print(res)
    
    # not 逻辑非
    
    res = not True
    res = not False
    print(res)
    View Code

    什么是逻辑短路

    两种形式:

      (1) True or 表达式

      (2) Fasle and 表达式

    无论后面的表达式是什么,都无法改变最后的结果,会出现逻辑短路

    True or True => True

    True or False => True

    1.5 赋值运算符  = += -= *= /= //= %= **=

    var1 = 10
    var1 = 10 !=10
    
    # +=
    var1 = 4
    var2 = 6
    """var1 = var1 + var2"""
    var1 += var2
    print(var1)
    
    # -= 
    var1 = 4
    var2 = 6
    """var1 = var1 - var2"""
    var1 -= var2
    print(var1)
    
    # *= 
    var1 = 100
    var2 = 3
    """var1 = var1 * var2"""
    var1 *=  var2
    print(var1 , var2)

    1.6 成员运算符: in 和 not in (针对于容器类型)

    # 字符串
    """必须是连续的片段"""
    strvar = '瘦成闪电,胖成坚果'
    res = '闪电' in strvar
    res = '瘦胖' in strvar
    print(res)
    
    # 列表,元组,集合
    lst = ['更这事','既迎合','孙翔宇']
    res = '张银' in lst
    tup = ('万胜府','像欧诺个话','梁瑞奇怪')
    res = '万胜府' not in tup
    setvar = {'刘玉播','黄建昌','放进孙'}
    res = '放进孙' not in setvar
    
    # 字典
    """in或者not in 在字典中,判断的是键,不是值"""
    dic = {'hxr':'小黄人','hlz':'回落至'}
    res = '小换人' in dic
    res = 's1' in dic
    res = 's1' not in dic
    print(res)
    View Code

     三. 位运算符

    1.按位与&

    var1 = 19
    var2 = 15
    print(var1 & var2)
    """
    19的二进制
    0000 ... 10011
    15的二进制
    0000 ... 01111
    
    0000 ... 10011
    0000 ... 01111
    0000 ... 00011 => 3
    """
    View Code

    2. 按位或 |

    var1 = 19
    var2 = 15
    print(var1 | var2)
    """
    19的二进制
    0000 ... 10011
    15的二进制
    0000 ... 01111
    
    0000 ... 10011
    0000 ... 01111
    0000 ... 11111 => 31
    """

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

    """
    1 0 => 1
    1 1 => 0
    0 0 => 0
    0 1 => 1
    """
    var1 = 19
    var2 = 15
    print(var1 ^ var2)
    """
    19的二进制
    0000 ... 10011
    15的二进制
    0000 ... 01111
    
    0000 ... 10011
    0000 ... 01111
    0000 ... 11100 => 28
    """
    View Code

    4. <<左移

    """ 左移相当于做乘法 : 5 * 2的n次幂 """
    res = 5 << 1 # 10
    res = 5 << 2 # 20
    res = 5 << 3 # 40
    print(res)
    """
    0000 ...  101
    0000 ... 1010  移动一位 10
    0000    10100  移动二位 20
    """
    View Code

    5.>>右移

    """ 右移相当于做除法 : 5 // 2的n次幂 """
    res = 5 >> 1 # 2
    res = 5 >> 2 # 1
    res = 5 >> 3 # 0
    print(res)
    """
    0000 ...  101
    0000 ...  010  移动一位 2
    0000 ...  001  移动二位 1
    0000 ...  000  移动三位 0
    """
    View Code

    6. ~按位非

    """公式: -(n+1)"""
    var1 = ~19
    print(var1)
    """
    ~ 按位非每一位都取反,包括符号位,求反码每一位除了符号位,都取反.
    
    原码:0000 ... 10011
    反码:0000 ... 10011
    补码:0000 ... 10011
    
    补码:     0000 ... 10011
    按位非:   1111 ... 01100
    
    给你补码求原码:
    补码: 1111 ... 01100
    反码: 1000 ... 10011
    原码: 1000 ... 10100 => -20
    """
    
    var1 = ~(-22)
    print(var1)
    """
    原码: 1000 ... 10011
    反码: 1111 ... 01100
    补码: 1111 ... 01101
    
    补码:    1111 ... 01101
    按位非:  0000 ... 10010
    
    给你补码求原码:
    正数 : 补码 = 反码 = 原码
    
    原码:  0000 ... 10010 => 18
    """
    View Code

    7. 运算符总结

     1 """
     2 (1) 个别运算符:
     3     优先级最高 ** 幂运算
     4     优先级最低 =  赋值运算符
     5     () 括号可以提升运算优先级
     6     
     7 (2) 整体 一元运算符 > 二元运算符
     8     一元运算符: 同一时间,只操作一个值 - ~
     9     二元运算符: 同一时间,操作两个值 + - * / ...
    10     
    11 (3) 同一层级
    12     逻辑: () > not > and > or
    13     算数: 乘除 > 加减
    14     位运算符: ( << >> ) > & > ^ > |
    15 
    16 (4) 其他运算符
    17     算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符
    18     赋值运算符是最后算完进行赋值,做收尾工作的.
    19 """    
    20 res = 5+5 << 6//3 is 40 and True
    21 print(res)
    22 
    23 """
    24 res = 10 << 2 is 40 and True
    25 res = 40 is 40 and True
    26 res = True and True
    27 res = True
    28 """
    29 # 加上括号包起来,让别人能看懂代码;
    30 res = (5+5) << (6//3) is 40 and True
    View Code
  • 相关阅读:
    程序的编码问题
    man DMIDECODE
    Github熟悉一
    man uname
    第一轮铁大树洞APP开发冲刺(2)
    第九周学习进度
    第九周安卓开发学习总结(3)
    第一轮铁大树洞APP开发冲刺(1)
    第九周安卓开发学习总结(2)
    第九周安卓开发学习总结(1)
  • 原文地址:https://www.cnblogs.com/whc6/p/14024611.html
Copyright © 2011-2022 走看看