Python全栈之运算符详解

2022-01-25,

目录
  • 1. 算数_比较_赋值_成员
    • 1.1 算数运算符
    • 1.2 比较运算符
    • 1.3 赋值运算符
    • 1.4 成员运算符
  • 2. 身份运算符
    • 小提示:
  • 3. 逻辑运算符
    • 3.1 位运算符
    • 3.2 小总结
  • 4. 代码块_单项_双项分支
    • 4.1 代码块
    • 4.2 流程控制
    • 4.3 单项分支
    • 4.4 双项分支
  • 5. 小作业
    • 总结

      1. 算数_比较_赋值_成员

      1.1 算数运算符

      算数运算符: + - * / // % **

      # +
      var1 = 7
      var2 = 90
      res = var1 + var2
      print(res)
      # -
      var1 = 7
      var2 = 90
      res = var1 - var2
      print(res)
      # *
      var1 = 7
      var2 = 10
      res = var1 * var2
      print(res)
      # / 结果永远为小数
      var1 = 10
      var2 = 5
      res = var1 / var2
      print(res , type(res))
      # // 地板除
      """被除数 ➗ 除数 = 商"""
      """注意点:如果被除数或者除数是小数,那么得到正常结果之后,数值后面带上.0变成小数"""
      var1 = 10.0
      var2 = 3.0
      # var2 = 3.0
      res = var1 // var2
      print(res)
      
      # %  取余
      var1 = 7
      var2 = 4
      res = var1 % var2
      res = -7 % 4  # -3 + 4 = 1
      res = 7 % -4  # 3 + (-4) = -1
      res = -7 % -4 # -3 (被除数和除数都是负的,正常结果加负号)
      res = 81 % 7   # 4
      res = 81 % -7  # -3
      res = -81 % 7  # 3
      res = -81 % -7 # -4
      print(res)
      # ** 幂运算
      res = 2 ** 3
      print(res)
      

      1.2 比较运算符

      比较运算符: > < >= <= == !=

      """比较运算符的结果要么是True , 要么是False 只有两个值"""
      res = 10 > 5
      res = 10 >= 10
      # ==这个符号是在做比较,比较==两边的数值是否一样
      res = 5 == 9
      res = 5 != 9 
      print(res)
      

      1.3 赋值运算符

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

      # = 赋值运算符 将右侧的值赋值给左侧变量
      a = 5 <= 3
      print(a)
      
      var1 = 10
      var2 = 5
      # += 
      """var1 = var1 + var2"""
      # var1 += var2
      # print(var1)
      # -=
      """var1 = var1 - var2"""
      # var1 -= var2
      # print(var1)
      # %=
      """var1 = var1 % var2"""
      var1 %= var2
      print(var1)
      

      1.4 成员运算符

      成员运算符: in not in (针对于容器型数据)

      """字符串判断时,必须是连续的片段"""
      strvar = "今天天气要下雨,赶紧回家收衣服"
      res = "今" in strvar
      res = "天气" in strvar
      res = "赶回" in strvar
      print(res)
      # 针对于列表,元组,集合
      container = ["赵沈阳","赵万里","赵世超"]
      container = ("赵沈阳","赵万里","赵世超")
      container = {"赵沈阳","赵万里","赵世超"}
      # res = "赵沈阳" in container
      # res = "赵万里" not in container
      res = "赵世超1223232" not in container
      print(res)
      # 针对于字典 (判断的是字典的键,不是值)
      container = {"zsy":"赵沈阳","zwl":"赵万里","zsc":"赵世超"}
      res = "赵沈阳" in container # False
      res = "zsy" in container
      print(res)
      

      2. 身份运算符

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

      # 整型 -5~正无穷 
      var1 = 100
      var2 = 100
      print(var1 is var2)
      # 浮点型 非负数
      var1 = -9.1
      var2 = -9.1
      print(var1 is var2)
      # bool 相同即可
      var1 = True
      var2 = True
      print(var1 is var2)
      # complex 在实数+虚数不相同 (只有虚数的情况下例外)
      var1 = 6-8j
      var2 = 6-8j
      var1 = -10j
      var2 = -10j
      print(var1 is var2)
      # 容器: 相同字符串 , 空元组相同即可  剩下的所有容器都不相同
      container1 = ()
      container2 = ()
      print(container1 is not container2)
      container1 = "你"
      container2 = "你"
      print(container1 is not container2)
      container1 = [1,23,3]
      container2 = [1,23,3]
      print(container1 is not container2)
      

      小提示:

      # var1和var2地址id是一样的
      var1 = 10j 
      var2 = 10j
      # var1和var2地址id是不一样的
      var1 = -10j 
      var2 = -10j
      

      3. 逻辑运算符

      逻辑运算符: 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 = False or True   # True
      res = True or False   # True 
      res = False or False  # False
      print(res)
      # not 逻辑非  
      res = not True
      res = not False
      print(res)
      # 逻辑短路
      """
      无论后面的表达式是True 还是False 都已经无法改变最后的结果,那么直接短路,后面的代码不执行;
      (1) True or print("程序执行了 ~ 1111")
      (2) False and print("程序执行了 ~ 2222")
      True or print("程序执行了 ~ 1111")
      True or True => True
      True or False => True
      False and print("程序执行了 ~ 2222")
      False and True  => False
      False and False => False
      """
      """
      计算规律:
      	先脑补计算当前表达式的布尔值是True还是False
      	如果出现了 True or 表达式  或者 False and 表达式的情况,直接返回前者,后面代码不执行
      	如果没有出现短路效果,直接返回后者
      """
      res = 5 and 6 # 6
      """
      True and True =>True
      True and False => False
      """
      res = 5 or 6  # 5
      res = 0 and 999
      res = 0 or "abc"
      print(res)
      # 逻辑运算符的优先级
      """ 优先级从高到低: () > not > and > or   """
      res = 5 or 6 and 7 # 5 or 7 => 5
      res = (5 or 6) and 7 # 5 and 7
      res = not (5 or 6) and 7 # not 5 and 7 => False and 7 => False
      res = 1<2 or 3>4 and 5<100 or 100<200 and not (700>800 or 1<-1)
      """
      not (False or False) => True
      res = 1<2 or 3>4 and 5<100 or 100<200 and not (700>800 or 1<-1)
      res = True or False and True or True and True
      res = True or False or True
      res = True or True => True
      """
      print(res)
      

      3.1 位运算符

      位运算符: & | ^ << >> ~

      var1 = 19
      var2 = 15
      # & 按位与
      res = var1 & var2
      """
      000 ... 10011
      000 ... 01111
      000 ... 00011 => 3
      """
      print(res)
      # | 按位或
      res = var1 | var2
      """
      000 ... 10011
      000 ... 01111
      000 ... 11111
      """
      print(res)
      # ^ 按位异或
      """两个值不相同=>True 反之返回False"""
      res = var1 ^ var2
      """
      000 ... 10011
      000 ... 01111
      000 ... 11100
      """
      print(res)
      # << 左移 (相当于乘法)
      """5乘以2的n次幂"""
      res = 5 << 1 # 10
      res = 5 << 2 # 20
      res = 5 << 3 # 40
      print(res)
      """
      000 ... 101  => 5
      000 .. 1010  => 10
      000 ..10100  => 20
      000 .101000  => 40
      """
      # >> 右移 (相当于除法)
      """5地板除2的n次幂"""
      res = 5 >> 1 # 2
      res = 5 >> 2 # 1
      res = 5 >> 3 # 0
      """
      000 ... 101
      000 ... 010 => 2
      000 ... 001 => 1
      000 ... 000 => 0
      """
      print(res)
      
      # ~ 按位非 (针对于补码进行操作,按位取反,包含每一位)
      """ -(n+1) """
      # res = ~22
      res = ~19
      print(res)
      """
      原码:000 ... 10011
      反码:000 ... 10011
      补码:000 ... 10011
      补码:   000 ... 10011
      按位非: 111 ... 01100
      给你补码->原码
      补码:111 ... 01100
      反码:100 ... 10011
      原码:100 ... 10100 => -20
      """
      res = ~-19
      print(res)
      """
      原码:100 ... 10011
      反码:111 ... 01100
      补码:111 ... 01101
      补码:   111 ... 01101
      按位非: 000 ... 10010
      给你补码->原码 (因为是整数 ,原反补相同)
      000 ... 10010 => 18
      """
      

      3.2 小总结

      总结:
      	个别运算符:
      		运算符优先级最高的: **
      		运算符优先级最低的: =
      		()可以提升优先级
      	一元运算符 > 二元运算符 (优先级)
      		一元运算符 : 同一时间,操作一个值 ~ - 
      		二元运算符 : 同一时间,操作一个值 + - * / ....
      	同一种类运算符:
      		算数运算符 : 乘除 > 加减
      		逻辑运算符 : () > not > and > or 
      		位运算符   : ( << >> ) > & > ^ > |
      	整体排序:
      		算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
      		赋值运算符用来做收尾
      """
      res = 5+5 << 6 // 3 is 40 and False
      """
      res = 10 << 2 is 40 and False
      res = 40 is 40 and False
      res = True and False
      res = False
      """
      print(res)
      # 用括号提升下优先级
      res = (5+5) << (6//3) is 40 and False
      

      4. 代码块_单项_双项分支

      4.1 代码块

      代码块:以冒号作为开始,用缩进来划分相同的作用域,这个整体是代码块

      """作用域: 作用的范围"""
      if 10 == 11:
      	print(1)
      	print(2)
      	print(3)
      print(4)
      
      # 缩进:要么全都使用\t tab  要么全都是使用4个空格(也可以两个空格,标准的是四个),来表达相同的作用域,不能混再一起;
      """
      if 10 == 10:
      	print(1)
          print(2)
      """
      # 其他语言的写法 (了解)
      """
      if(10 == 10){
      	print(1)
      					print(2)
      																								print(3)
      }
      """
      

      4.2 流程控制

      """
      流程: 代码执行的过程
      控制: 对代码执行过程中的把控
      三大结构:
      (1)顺序结构: 默认代码从上到下,依次执行
      (2)分支结构: 单项分支 双向分支 多项分支 巢状分支
      (3)循环结构: while / for
      """
      

      4.3 单项分支

      """
      if 条件表达式:
      	code1
      	code2
      当条件表达式成立,返回True,执行对应的代码块
      """
      zhiye = "程序员"
      if zhiye == "程序员":
      	print("拿高薪")
      	print("钱多,话少,死的早")
      	print("发量日渐稀少")
      

      4.4 双项分支

      """
      if 条件表达式:
      	code1  ..
      else:
      	code2 ... 
      如果条件表达式成立,返回True ,执行if这个区间的代码块
      如果条件表达式不成立,返回False,执行else这个区间的代码块
      if   分支的代码块也叫做真区间
      else 分支的代码块也叫做假区间
      """
      
      zhiye = "强盗"
      zhiye = "律师"
      if zhiye == "强盗":
      	print("打他")
      	print("骂他")
      	print("喂他辣椒水")
      else:
      	print("给你一朵红花")
      
      # input 等待用户输入字符串 (注意:结果一定是字符串)
      """
      name = input("你好~ 你妈贵姓~")
      print(name , type(name))
      """
      # ### 模拟网站登录 
      # 如果admin = wangwen  密码:password = 111 显示登录成功,否则显示登录失败
      # admin = "wangwen"
      # password = "111"
      admin = input("请输入您的账号:")
      password =  input("请输入您的密码:")
      if admin == "wangwen" and password == "111":
      	print("登录成功")
      else:
      	print("登录失败")
      

      5. 小作业

      1.99//4  ,  99%4 ,  -99 %4  ,  -99 %-4值是多少
      2.成员和身份运算符如何使用
      3.逻辑运算符优先级?逻辑短路在什么情况下发生?
      4.优先级最高和最低的运算符是?
      5.左移右移后的值如何计算?按位非的公式?
      6.~(-25) ~25 推到一下过程
      7.res = 17>15 or 78<11 or 7 and 8 and not True is True  res=?
      8.计算表达式的值
          1).6 or 2 > 1      
          2).3 or 2 > 1      
          3).0 or 5 > 4      
          4).5 < 4 or 3          
          5).2 > 1 or 6      
          6).3 and 2 > 1     
          7).0 and 3 > 1    
          8).2 > 1 and 3    
          9).3 > 1 and 0    
          10).3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
          11)not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
      9.提示用户输入 "如何在dnf中变得更强?". 如果输入的是充钱,打印"马化腾爱你" ,反之输出,"你想一想,不充钱怎么可能变得更强"
      

      总结

      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注北冥有鱼的更多内容!

      您可能感兴趣的文章:

      • python运算符号详细介绍
      • python注释和运算符详解
      • Python 正则表达式大全(推荐)
      • python正则表达式最详解
      • Python 正则表达式详解
      • 详解python的运算符与表达式

      《Python全栈之运算符详解.doc》

      下载本文的Word格式文档,以方便收藏与打印。