Python学习,Day4

    技术2022-07-17  80

    ###运算符

    (1)算术运算符,+ - * / // % **

    var1 = 12 var2 = 4

    #加 res = var1 + var2 #减 res = var1 - var2 #乘 res = var1 * var2

    #除法(注意,除法的结果永远是小数) res = var1 / var2 res = 3.0

    #// 整除 地板除 (1)被除数与除数都是整数,返回整数 res = 11//3 res = 3 (2)被除数与除数有一个是小数,返回小数 res = 11.0//3 res = 3.0 res = 15.33444 // 4 res = 3.0 (不管是被除数与除数多少位小数,结果都是保留一位)

    #%取余 保留余数 res = 11%4 #3 res = -11%4 #-3+4=1 res = 11%-4 #3+(-4)=-1 res = -11%-4 # -3 解题思路: (都是负的时候,跟正数一样,多个负号) ( 当被除数与除数是异号时,先不考虑正负符号,先得到都是正数的余数3,接下来是口诀: 余数的符号看被除数,余数再和除数相加) (得到3,再看-11,得到-3,3再和除数4相加得到1) #幂运算 ** res = 3 ** 3 27

    (2)###比较运算符 > ,<, >= ,<=,==,!=

    比较运算符只会产生两种结果:True,False var1 = 100 var2 = 100 res = var1 > var2 res = var1 < var2 res = var1 >= var2 res = var1 <= var2 #注意 res = var1 == var2 res = var1 != var2

    (3)###赋值运算符 =,+=,-=,*=,/=,//=,%=,**=

    #等于= 从右向左,将右侧的值赋值给左侧变量 var1 = 9 var2 = 2

    += var1 += var2 (var1 = var1 + var2) -= var1 - =var2(var1 = var1 - var2) *= /= %= **= 都是一样的用法

    (4)###成员运算符

    in 和 not in (只针对容器类型的数据) “”“字符串必须是一个连续的片段”"" #str strvar = “雷霆嘎巴,无情哈拉少” res = “雷” in strvar res = “文” not in strvar res = “无情” in strvar res = “霆哈少” in strvar #这个不对,不能跳跃式,必须是连续的 (逗号也作为一个元素可查)

    #list, tuple, set

    lst = [“余锐”,“高学峰”,“治理追”,“温子月”,“草神光”] res = “高学峰” in lst print(res)

    tup = (“余锐”,“高学峰”,“治理追”,“温子月”,“草神光”) res = “李博伦” not in tup print(res)

    setvar = {“金角大王”,“银角大王”,“神秘男孩”} res = “神秘男孩” in setvar print(res) (注意,不能查’高’这样的元素,在list,tuple,set中,只能查他们的单独的整个的元素,比如"高学峰",而不能查"高")

    #dict in和 not in在字典中只能判断键是否在,不能判断值

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

    #python3.6 #整型 -5~正无穷 var1 = 1000 var2 = 1000 res = var1 is var2

    #浮点型 非负数 #布尔型 只要值相同就行 #复数型 实数+虚数永远不同 当只有虚数且是0j或者正的比如都是90j id相同 当只有虚数,但是是负的,id也不同

    #容器类型 相同str和空元组 id一样 其他的list,tuple,set,dict相等,id也不同

    ###(6)逻辑运算符 not and or

    #not逻辑 非 真变假,假变真 not True = False not False = True #and逻辑 与 全真则真,一假则假 res = True and True # True res = True and False # False res = False and True # False res = False and False # False

    or 逻辑或 全假则假,一真则真

    res = True or True # True res = True or False # True res = False or True # True res = False or False # False

    逻辑运算符优先级: not>and>or 逻辑短路:出现短路,后面的代码不执行 (1) True or 表达式 (2) False and表达式

    True or print(“紫月真胖呀”) True or True => True True or False => True

    False and print(“紫月真猛呀”) False and False => False False and True => False

    res = 5 or 6 and 7 # 5 or 7 => 5 res = (5 or 6) and 7 # 5 and 7 => 7 res = not(5 or 6) and 7 # not 5 and 7 => False and 7 =>False (and的时候,前面正确就执行到最后,要后面的值) (and的时候,前面False,直接就停止了) (or的时候前面True,直接就True了)

    ###(7)位运算符: & ,| ,^ ,<<, >>,~(针对二进制上的运算)

    (1)按位与 & var1 = 19 var2 = 15 print(var1 & var2)

    19的二进制 0000 … 10011 15的二进制 0000 … 01111

    0000 … 10011 0000 … 01111 0000 … 00011 => 3 (二进制同位上的值相同,就输出1) (2)按位或 | 19的二进制 0000 … 10011 15的二进制 0000 … 01111

    0000 … 10011 0000 … 01111 0000 … 11111 => 31 (二进制同位上的值,存在1就输出1,否则0) (3)按位异或 ^ 同位上 1 0 => 1 1 1 => 0 0 0 => 0 0 1 => 1 (二进制,同位上,值不同就输出1,值相同输出0) (4)左移 << 左移相当于做乘法 : 变量 * 2的n次幂 res = 5 << 1 # 10 res = 5 << 2 # 20 res = 5 << 3 # 40 (将5转化为二进制,然后向左移位,每一次移动相当于乘2一次) 0000 … 101 0000 … 1010 移动一位 10 0000 10100 移动二位 20 (5)右移 >> 二进制上向右移动一位 5 0000 … 101 0000 … 010 移动一位 2 0000 … 001 移动二位 1 0000 … 000 移动三位 0 (每移动一次,除以2一次,但是正数除法是不会得0的,所以是向下取整,以5来说,向右移动三位,5/(2**3),也就是5/8,是不会得到0的,但是移动三位会得到0,所以5/8向下取整,是0) (6) ~ 按位 非 (针对于补码进行操作,按位取反,包括符号位) 公式: ~n = -(n+1) 例如 var1 = ~19 结果是-20 var2 = ~(-22) 结果是 21 按位非每一位都取反,包括符号位,求反码每一位除了符号位,都取反. 例如: var1 = 19 原码:0000 … 10011 反码:0000 … 10011 补码:0000 … 10011

    补码: 0000 … 10011 按位非: 1111 … 01100

    给你补码求原码 补码: 1111 … 01100 反码: 1111 … 01011 (补码等于反码加1) 原码:1000… 10100 -20

    ###运算符优先级

    (1)个别运算符:

    优先级最高**幂运算 优先级最低 = 赋值运算符 ()可以提升运算符的优先级

    (2)整体 一元运算符>二元运算符 一元运算符:同一时间,只操作一个值- ~ 二元运算符:同一时间,操作两个值+ - * / … (3)同一层级 逻辑:()>not>and>or 算数:乘除>加减 位运算符:(<< >>)> &> ^ > | (4)其他运算符 算术运算符>位运算符>比较运算符>身份运算符>成员运算符>逻辑运算符 赋值运算符是最后算完进行赋值,做收尾工作的 res = 5 + 5 << 6//3 is 40 and True True 加上括号,让别人都能看懂 res = (5+5) << (6//3) is 40 and True

    Processed: 0.026, SQL: 9