py002_python的运算符和流程控制语句

1. 运算符

1.1 算术运算符

  • **概述:**python中用于执行基本数学运算的符号。

  • 常用的算术运算符:

    • 加(+):取两个数的和
    • 减(-):取两个数的差
    • 乘(*):取两个数的积
    • 除(/):取两个数的商
    • 整除(//):取两个数的整数商部分
    • 取余(%):取余数部分
    • 幂次运算(**)
  • 特性:

    • 除法运算的结果都是浮点型数据,即便是可以整除,结果也是浮点数
    • 所有有浮点型数据参与运算的,结果都是浮点数
    • 算术运算的优先级:** > * / // % > + -
      • 不确定优先级的时候直接加括号来规定运算顺序
      • 使用括号来确定优先级可以增强代码的可读性
  • 代码示例:

    # python中常用的算术运算符:
    # + 加 取两个数的和
    print(5 + 3)  # 8
    # - 减 取两个数的差
    print(5 - 3)  # 2
    # * 乘 取两个数的积
    print(5 * 3)  # 15
    # / 除 取两个数的商
    print(5 / 2)  # 2.5
    print(4 / 2)  # 2.0
    # // 整除  5 / 3 商 1 余 2  整除取的就是整数商部分
    print(5 // 3)  # 1
    print(5.3 // 2)  # 2.0
    # % 取模/取余 5 / 3 商 1 余 2 取模取得是余数部分
    print(5 % 3)  # 2
    print(5.3 % 3)  # 2.3
    # ** 幂次运算
    print(5 ** 3)  # 代表5的3次方 125
    # 除法运算的结果是浮点型数据,所有有浮点数参与的运算,结果都是浮点型
    
    # 算术运算符的优先级
    # 测试后发现乘除和取余运算在连续运算时从左至右依次计算
    print(5 // 2 * 2)  # 4
    print(5 * 3 // 2)  # 7
    print(5 % 2 * 2)  # 2
    print(5 * 3 % 2)  # 1
    
    # 幂次运算的优先级高于其他算术运算符
    print(2 * 3 ** 2)  # 18,先计算 3 ** 2 = 9,再计算 2 * 9 = 18
    

1.2 赋值运算符

  • **概述:**基本的赋值运算符就是=,作用是把等号右边的数据赋值给等号左边的变量。

  • **复合赋值运算符:**就是将算术运算符和赋值运算符连接在一起,在赋值之前先进行运算。

    • +=:num += 3 等价于 num = num + 3
    • -=:num -= 3 等价于 num = num - 3
    • *=:num *= 3 等价于 num = num * 3
    • /=:num /= 3 等价于 num = num / 3
    • //=:num //= 3 等价于 num = num + 3
    • %=:num %= 3 等价于 num = num + 3
    • **=:num **= 3 等价于 num = num ** 3
  • 特性:

    • 等号左边只能是变量,等号右边可以是数据、表达式或已经被定义的变量
    • 可以对同一个变量进行多次赋值,最终的结果是最后一次赋值的数据
    • 可以使用连等给多个变量赋相同的值
    • 可以使用逗号分隔一次性给多个变量赋值
  • 注意:

    • python没有自增自减运算符(如 i++、i–)
  • 代码示例:

    name = "刘亦菲"
    print(name)  # 刘亦菲
    actress = name
    print(actress)  # 刘亦菲
    total = 1 + 2 + 3 + 4
    print(total)  # 10
    # 等号左边只能是变量,等号右边可以是数据、表达式或已经被定义的变量
    # 以下代码会报错
    # "欧阳锋" = name
    # 18 = age
    
    # 可以对同一个变量进行多次赋值,最终的结果是最后一次赋值的数据
    name = "小龙女"
    print(name)  # 小龙女
    
    # 可以使用连等给多个变量赋相同的值
    a = b = c = 1
    print(a, b, c)  # 1 1 1
    
    # 可以使用逗号分隔一次性给多个变量赋值
    name, age = "洪七公", 99
    print(name, age)  # 洪七公 99
    
    # 复合赋值运算符
    num = 9
    num += 3
    print(num)  # 12
    num -= 3
    print(num)  # 9
    num *= 3
    print(num)  # 27
    num /= 3
    print(num)  # 9.0 除法的结果是浮点数
    

1.3 比较运算符

  • **概述:**比较运算就是比较两个数值是否相等或者谁大谁小的运算符,运算符计算的结果是布尔类型数据

  • 常用的比较运算符:== != > < >= <=

  • 特性:

    • 布尔类型在比较运算中,True为1,False为0
    • <=和>=表示的是小于或等于 和 大于或等于,所以 3 >= 2,1 <= 2的结果都是True
    • 如果数据类型不相同,除了(int float bool)之外,不能比较大小
    • 如果数据类型不相同,除了(int float bool)之外,判断是否相等时不会报错,但是一定不相等
  • 字符串之间比较大小的规则:

    • 按照每个字符的编码从左到右进行逐一比较,如果有一个字符大则整体大,如果大小相同则继续比较下一位
    • 字符串之间的大小和长短没有必然关系
    • 规则:空格<数字<大写字母<小写字母<汉字,空格是最小的可见字符
    • 我们一般不会使用字符串进行数字逻辑的比较,而是用于排序
    • 空格是最小的字符
  • 代码示例:

    # 不能使用 = 判断相等
    # print(1 = 2)  # SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
    print(1 == 2)  # False
    print(1 == True)  # True
    print(0 == False)  # True
    print(2 == True)  # False
    print(2 == False)  # False
    
    print(1 != 2)  # True
    print(1 != False)  # True
    print('-' * 27)
    
    print(True > 0)  # True
    print(True > 1)  # False
    print(False < 0)  # False
    print(False > 0)  # False
    
    print(3 >= 2)  # True
    print(1 <= 2)  # True
    print(1 >= 1)  # True
    
    # 如果数据类型不相同,除了(int float bool)之外,不能比较大小
    # TypeError: '<' not supported between instances of 'int' and 'str'
    # print(1 < '2')
    
    # 如果数据类型不相同,除了(int float bool)之外,则判断是否相等时不会报错,但一定不相等
    print(3 != '3')  # True
    print(5 == '5')  # False
    print('-' * 27)
    
    # 字符串之间的比较运算
    print('1' > '2')  # False
    print('15' < '18')  # True
    print('19' > '5')  # False
    
    print('A' > 'a')  # False
    print("985" > "98k")  # False
    print("abc" > "de")  # False
    

1.4 逻辑运算符

  • **概述:**用于组合或者修改布尔表达式的值,常用于判断条件、循环控制等。

  • 分类:

    • 逻辑与(and):同真即真
    • 逻辑或(or):同假即假
    • 逻辑非(not):真假互换
  • 代码示例:

    # 逻辑运算符
    # and 逻辑与,同真即真
    print(True and True)  # True
    print(False and True)  # False
    print(True and False)  # False
    print(False and False)  # False
    print('-' * 27)
    
    # or 逻辑或,同假即假
    print(True or True)  # True
    print(True or False)  # True
    print(False or True)  # True
    print(False or False)  # False
    print('-' * 27)
    
    # not 逻辑非,真假互换
    print(not False)  # True
    print(not True)  # False
    

2. 流程控制语句

  • 三大流程语句:
    • 顺序语句:python中默认代码都是从上到下顺序执行的
    • 分支语句:使用if进行构造,在同一条件下,只有一个分支的代码被执行
    • 循环语句:使用for或while进行构造,在条件满足的情况下,重复执行相同或者相似的代码

2.1 顺序语句

  • **概述:**python中默认代码都是从上到下顺序执行的

  • 代码示例:

    print("hello world")
    print("hello python")
    print("I love python")
    """
    打印结果:
    hello world
    hello python
    I love python
    
    代码永远都是从上到下依次执行的
    """
    

2.2 分支语句

  • 单条件分支语句

    • 格式:

      if 判断条件:
          条件成立执行的代码块
      
    • 注意:python中没有大括号控制分支范围,需要使用缩进进行标明,建议使用Tab键

  • 对立条件分支语句

    • 格式:

      if 判断条件:
          条件成立时执行的代码块
      else:
          条件不成立时执行的代码块
      
    • 注意:同一条件下,if控制的代码块和else控制的代码块必有一个被执行,而且只能有一个被执行

  • 多条件分支语句

    • 格式:

      if 条件1:
          条件1成立时执行的代码
      elif 条件2:
          条件2成立时执行的代码
      elif 条件3:
          条件3成立时执行的代码
      ....
      else:
          上述条件均不成立时执行的代码
      
    • 注意:

      • 该分支语句有多个elif,每个elif控制一个要执行的代码块,条件成立时执行该分支控制的代码块
      • 条件从上到下依次判断,当一个条件成立后,将不会继续判断后续条件,直接执行分支代码块后结束
      • 同一个条件下只有一个分支中的代码会被执行
      • 当所有条件均不满足时,执行else中的代码,else可有可无
  • 分支语句的嵌套:

    • 格式:

      if 外层条件语句:
          外层条件成立时执行的代码块
          if 内层条件语句:
              内层条件成立时执行的代码块
      else:
          外层条件不成立时执行的代码块
          if 内层条件语句:
              内层条件成立时执行的代码块
      
  • 代码示例:

    # 单条件分支
    # 需求: 判断年龄是否大于等于18岁,如果大于等于18岁则可以进入网吧网游戏
    age = int(input("请输入您的年龄: "))
    if age >= 18:
        print("可以进入网吧玩游戏!")
        print("准备团战")
    
    # 对立条件分支
    age = int(input("请输入您的年龄: "))
    if age >= 18:
        print("可以进入网吧玩游戏!")
        print("准备团战")
    else:
        print("回去看喜羊羊吧!")
    
    # 多条件分支
    score = int(input("请输入您的考试成绩: "))
    if score > 100 or score < 0:
        print("数据异常,请重新输入!")
    elif score >= 90:
        print("优秀")
    elif score >= 80:
        print("良好")
    elif score >= 60:
        print("及格")
    else:
        print("不及格")
    
    # 分支语句嵌套
    # 情节描述:上公交车,并且可以有座位坐下
    # 要求:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果车上有空座位,就可以坐下。
    money = 3
    seat = True
    
    # 判断公交卡余额是否大于等于2元
    if money >= 2:
        print("赶紧上车吧")
        # 当上车之后就可以判断是否有座了
        if seat:
            print("赶紧坐下,车要开了")
        else:
            print("抓紧扶好,要飙车了")
    else:
        print("穷鬼,跟着车跑吧,不费油")
    
  • 三目运算符:

    • 概述:

      • 如果一个数据参与运算就是单目:not False
      • 如果两个数据参与运算就是双目:1 + 2
      • 三目运算:三个数据参与运算
    • 格式:条件成立时的到的结果 if 条件 else 条件不成立时得到的结果

    • 代码示例:

      # 需求: 有两个变量 a 和 b  打印a 和 b 中 较大的值
      a = 19
      b = 26
      print(a if a > b else b)
      
      # 三目运算符的结果可以复制给变量
      res = a if a > b else b
      print(res)
      

2.3 循环语句

  • while循环语句

    • 格式:

      while 判断条件:
          判断条件成立循环执行的代码1
          判断条件成立循环执行的代码2
      
    • 代码示例:

      # 打印1-5
      i = 1
      while i <= 5:
          print(i)
          i = i + 1  # 一定要更新循环变量
      
    • 注意:

      • while循环可以嵌套使用
      • 进行循环嵌套时,内外层循环变量名称不能相同
      • 一定不要忘记更新循环变量,避免死循环
      • while循环一般用于构造有特定结束条件的循环或死循环
  • for循环语句

    • 概述:for循环也是循环结构的一种,一般和容器类型搭配使用

    • 格式:

      for 临时变量 in 容器类型数据:
          循环体
      
    • 注意:

      • 循环次数和容器的长度相关
      • 一般遍历容器使用for循环,根据条件循环使用while
      • 构建死循环一般都使用while True
    • range函数:

      • range函数就是一个范围函数,内部是根据特定规则生成的整数序列
      • 格式:range(起始位置, 终止位置, 步长)
      • 注意:
        • range函数的范围是一个左闭右开区间,即包含起始位置,不含终止位置
        • range的步长可以省略,省略后默认步长为1
        • range的起始位置可以省略,省略后默认从0开始
        • range中的参数只能使用整数
    • 代码示例:

      # 打印从 1-9 的数字
      for i in range(10):
          print(i)
      
      # 打印 1-9 的数字累加和
      sum_num = 0
      for i in range(1, 10):
          sum_num += i
      print(sum_num)
      
      # 打印 1-9 的偶数数字累加和
      sum_even = 0
      for i in range(2, 10, 2):
          sum_even += i
      print(sum_even)
      
      # 打印99乘法表
      for i in range(1, 10):
          for j in range(1, i + 1):
              print(f"{j} × {i} = {j * i}", end='\t')
          print()
      
  • 循环控制语句

    • break:用于终止循环,即执行了break之后循环不再执行,直接执行循环后面的代码

    • continue:用于结束本次循环中未执行的内容,直接进入下一次循环

    • 注意:

      • 在while循环中,如果使用循环变量控制循环的执行,必须在使用continue之前更新循环变量,否则会造成死循环
      • break和continue只能控制当前所在的循环,如果在内层循环就控制内层循环的结束和跳过,如果在外层就控制外层循环的结束和跳过
      • break和continue只能用在循环体中,否则报错
    • 代码示例:

      # 判断一个数是否是质数,当找到一个因子的时候就说明不是质数,退出循环
      num = 9527
      i = 2
      while True:
          if num % i == 0:
              print(f"{num}存在因子{i},所以不是质数")
              break
          i += 1
      
      # 求 1-100 之间不能被3或7整除的数字之和
      sum_num = 0
      for i in range(1, 101):
          if i % 3 == 0 or i % 7 == 0:
              continue
          sum_num += i
      print(sum_num)
      
      # 下述代码会造成死循环,因为第一次满足if条件之后,continue结束本次循环,导致i没有被更新,于是会一直满足if条件,一直循环
      sum_num, i = 0, 1
      while i <= 100:
          if i % 3 == 0 or i % 7 == 0:
              continue
          sum_num += i
          i += 1
      print(sum_num)
      
  • 循环中的else

    • 格式:

      while 条件:
          循环体
      else:
          代码块
      # 当循环条件不满足时,执行else中的代码
      for 临时变量 in 容器类型:
          循环体
      else:
          代码块
      # 当容器类型中的元素遍历完后执行else中的代码
      
    • 注意:

      • 当循环异常终止时,else中的代码将不会被执行
      • 执行break结束循环,属于循环的异常终止,不会执行else
      • continue不会造成循环异常终止,else中的代码会被执行
    • 代码示例:

      # 循环中的else
      num = 19
      i = 2
      while i < num:
          if num % i == 0:
              print(f"{num}存在因子{i},所以不是质数")
              break
          i += 1
      else:
          print(f"{num}是素数")
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值