• Python 基础之python运算符


    一.运算符

     1.算数运算符 + - * / // % **

    var1 = 5
    var2 = 8

    #(1)  +
    res = var1 + var2
    print(res)

    # (2)  -  
    res = var1 - var2
    print(res)

    # (3) *
    res = var1 * var2
    print(res)

    # (4) / ,结果一定是小数)
    var1 = 8
    var2 = 2
    res = var1 / var2
    print(res)

    # (5) // 地板除 (整除)
    var1 = 8
    var2 = 2
    res = var1 // var2
    print(res)

    # 如果相除的两个含有小数,那么就在结果上加上.0
    var1 = 8.0
    var2 = 2
    res = var1 //var2
    print(res)

    #(6) % 取余
    print("<=================>")
    var1 = 7
    var2 = 4
    res = var1 % var2
    print(res)

    print("<================>")
    var1 = -7
    var2 = 4
    res = var1 % var2
    print(res) #1
    # -3 +4 =1

    print("<===================>")
    var1 = 7
    var2 = -4
    res = var1 % var2
    print(res) #-1
    # 3-4 = -1

    # (7) ** 幂运算
    var1 = 3
    res = var1 ** 3
    print(res)

     

    2.比较运算符 > < >= <= == !=

    #(1) >  大于 
    var1 = 10
    var2 = 20
    res = var1 > var2
    print(res)

    # (2) <  小于
    var1 = 10
    var2 = 20
    res = var1 < var2
    print(res)

    #(3) >=  大于等于
    var1 = 20
    var2 = 20
    res = var1 >= var2
    print(res)

    #(4) <=  小于等于
    var1 = 20
    var2 = 20
    res = var1 <= var2
    print(res)

    #(5) ==  等于
    var1 = 14
    var2 = 13
    res = var1 == var2
    print(res)
     
    '''
    2个等号,不是一个等号,一个等号是在做变量的赋值,两个是比较是否相同
    if var1 == var2
       print(123)
    '''

    # (6) !=  不等于
    var1 = 14
    var2 = 13
    res = var1 != var2
    print(res)

     

    3.赋值运算符 = += -= *= /= //= **=

     

    # (1)  =  将右边的值赋值给左侧
    var1 = 19
    var2 = 18
    var2 = var1
    print(var2)

    # (2)  +=  加等于
    var1 +=var2
    #var1 = var1 + var2  var1 = 19 + 20 = 39
    print(var1)

    #(3)  -=  减等于
    var1 -= var2
    #var1 = var1 - var2
    print(var1)


    #(4) *=  减等于
    var1 *= var2
    #var1 = var1 * var2
    print(var1)

    #(5)  /=  除等于
    var1 /= var2
    # var1 = var1 / var2
    print(var1)

    # (6)  //=  整除等于
    var1 //= var2
    # var1 = var1 // var2
    print(var1)


    #(7)  %=  取余等于
    var1 %= var2
    # var1 = var1 % var2
    print(var1)

    # (8)  **=  幂等于
    var1 **= var2
    # var1 = var1 ** var2
    print(var1)

    4.成员运算符 in not in (针对容器类型)

     

    """ 如果是字符串,必须是一个连续的片段才能判断成功"""

    # (1) 对于str
    # str
    strvar = "英雄爱江山,更爱美人"
    res = "爱江山" in strvar
    print(res)


    # (2) 对于list  tuple  set
    listvar = [1,2,34,56,7]
    res = 2 in listvar
    print(res)

    res = 55 not in listvar
    print(res)

    tuplevar = (323,31231,32131,3121)
    res = 432 not in tuplevar
    print(res)

    setvar = {(1,2,3),(4,5,6),7}
    res = (1,2,3) in setvar
    print(res)

    #(3)对于dict (in  not in 判断字典是字典的键)
    dictvar = {"hxd":"","sch":""}
    res  = "" not in dictvar  #True 因为大不在键里,所以是not in
    print(res)
    res = "hxd" in dictvar
    print(res)

    res = "aaa" not in dictvar
    print(res)

    5.身份运算符 is is not

    (检测两个数据在内存当中是否是同一个值)

    var1 = 6
    var2 = 6
    print(id(var1),id(var2))

    var1 = ""
    var2 = "不好"

    #is 用来判断2个变量的地址是否一致
    res = var1 is var2
    print(res)

    res = var1 is not var2
    print(res)

    # var1 == var2 var1 is var2 区别

    一个是在比较两个值是否相同
    一个是在比较两个值地址是否相同

    6.逻辑运算符 and or not

    # (1) and 逻辑与
    '''
    全真则真,一假则假
    '''
    res = True and True
    print(res)
    res = True and False
    print(res)
    res = False and True
    print(res)
    res = False and False
    print(res)
    #第一个为真,其他都为假

    #(2) or 逻辑或
    ''' 全假则假,一真则真'''
    res = True or True
    res = True or False
    res = False or False
    res = False or True
    print(res)


    # (3) not 逻辑非
    ''' 真变假 假变真'''
    res = not False
    res = not True
    print(res)

    #(4)逻辑短路 (后面的代码就不走了)
    '''
    #两种情况
    res = False and 布尔值
    res = True or 布尔值
    '''

    #print 默认返回一个None None的布尔值是假
    # res = False and print(1)
    print("============================")
    res = True and print(2)
    print(res)
    print("=========================")
    res = True or print(3)   #当最后结果为真的时候就不会返回None
    print(res)
    print("===========================")
    res = False or print(4)
    print(res)
    print("==========")
    res = True and 3
    print(res)
    # 逻辑运算符优先级
    ## python 语言支持逻辑运算符, 以下假设变量a 10, b20:
    ##运算符  逻辑表达式  描述 实例
    ##and  x and y    布尔"" - 如果 x Falsex and y 返回 False,否则它返回 y 的计算值。    (a and b) 返回 20
    ##or   x or y 布尔"" - 如果 x True,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10
    ##not  not x  布尔"" - 如果 x True,返回 False 。如果 x False,它返回 True。   not(a and b) 返回 False

    ''' () > not > and > or '''
    # (5+6)*37
    res = 5 or 6 and 7
    print("5 or 6 and 7等于:",res)
    #5 or 7 => 7

    res = not (5 or 6)and 7
    #| 5 or 6=> 5 | not 5 => False | False and 7 => False
    print("not (5 or 6)and 7 等于:%s" %(res))

    res = 5>6 or 7<8 and 9>10 or 11<12
    print(res)
    '''
    # res = 5>6 or 7<8 and 9>10 or 11<12
    #下面是解析:
    False or True and False or True
    False or False or True
    False or True => True
    '''

    print(res)

    '''
    有一种情况不用考虑and和or优先级问题,
    就是or 端口,比如 True or .......=> 结果一定为Ture
    '''

    # #数据类型的判断 isinstance
    '''
    isinstance (要判断的数据,判断的类型)要么返回真, 要么返回假
    isinstance (要判断的数据,(元组,放在各种类型,满足一个条件即为真))

    '''
    # 5 int 类型的吗?
    res = isinstance(5,int)
    print(res)

    res = isinstance("2233",list)
    print(res)

    # 有一个类型满足 返回真 一个都不满足 返回假
    res = isinstance(5,(int,list,tuple,str))
    print(res)

    7.位运算符 & | ~ ^ << >>

    var1 = 19
    var2 = 15
    #(1)  & 按位与
    res = var1 & var2
    print(res)
    """
    000...10011
    000...01111
    000...00011
    """

    # (2) | 按位或
    res = var1 | var2
    print(res)

    """
    000...10011
    000...01111
    000...11111
    """

    #(3) ^ 按位异或
    res = var1 ^ var2
    """
    000...10011
    000...01111
    000...11100
    """
    print(res)

    #(4) << (左移  右边的值相当于乘以2的几次幂 n<<m 相当于n2m次幂
    res = 5 << 1
    res = 5 << 2
    print(res)
    '''
    000...101
    000...1010
    '''

    # (5) >> 右移 (右移 右边的值相当于除以2的几次幂 n <<m 相当于n2m次幂)
    res = 5 >>1 #5 // 2 1次幂 => 2
    res = 5 >>2 #5 // 2 2次幂 => 1
    res = 5 >>3 #5 // 2 3次幂 => 0
    print(res)

    '''
    000...101
    000....10 => 2
    000....01 => 1
    '''

    #(6)  ~ 按位非 (按位非 操作的二进制的补码 对二进制的每一位进行取反,包括符号位) 公式:-(n+1)
    res = ~19
    print(res)
    '''
    000...10011 (补码)
    111...01100 (按位非)

    #给补码求原码
    111.。。01100

    100...10011 (反码)
    100...10100  (原码= 反码+1)
    十进制 => -20
    '''
    res = ~(-19)
    print(res)
    '''
    1000...10011 (原码)
    1111...01100  (反码)
    1111...01101  (补码)
    #现在 进行按位非
    0000...10010
    因为高位都是0是正数
    原码=反码=补码
    0000...10010 (原码)

     

    二.运算符的优先级

    () 括号优先级最高
    ** 优先级其次
    = 优先级最低

    一元元算符:同一时间只操作一个数字的(- ~)
    二元运算符:同一时间能操作二个数字的(+,-,...)
    ~19+5

    一般来说,一元运算符大于二元运算符的优先级

    + - * /   =>  * / 大于 + -
    () not and or =>  not > and  > or

    如果都是二级运算符:
    算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
    赋值运算符 作为最后等号右边的值算好后进行赋值

    res = 5+5 << 6 // 3 is 40 and True
    print(res)

    '''
    5+5 << 2 is 40 and True
    10 <<2 is 40 and True
    40 is 40 and True
    True and True
    True
    '''

     

  • 相关阅读:
    CxImage图像库的使用
    CxImage动态加载图片(判断图片文件类型)
    实现一个类似360的button
    cximage功能简介
    开源图像处理软件代码
    MFC + CxImage 实现自绘半透明按钮
    VC 下加载 JPG / JPEG / GIF / PNG 图片最简单的方法
    时序数据库InfluxDB:简介及安装
    学习springboot整合mybatis并编写测试类
    Mybatis-Plus使用全解
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/10802695.html
Copyright © 2020-2023  润新知