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

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

在 Python 编程中,运算符是构建表达式的基础,而流程控制语句则是实现逻辑跳转与重复执行的核心。掌握这两部分内容,是写出灵活、高效代码的前提。本文将系统梳理 Python 中的运算符分类、特性及使用场景,详解流程控制语句的语法规则与实践技巧,帮助你夯实编程基础。

一、运算符:构建表达式的基本单元

  • **概述:**运算符用于对数据进行运算或比较,根据功能可分为算术运算符、赋值运算符、比较运算符和逻辑运算符四大类。

1. 算术运算符:处理数值计算

  • **概述:**算术运算符用于执行基本的数学运算,包括加、减、乘、除等,是处理数值型数据的核心工具。

  • 常用的算术运算符:

    运算符名称功能说明示例结果
    +加法求两个数的和5 + 38
    -减法求两个数的差5 - 32
    *乘法求两个数的积5 * 315
    /除法求两个数的商(结果为浮点数)5 / 34 / 22.52.0
    //整除求商的整数部分5 // 35.3 // 212.0
    %取余(取模)求除法的余数5 % 35.3 % 322.3
    **幂次运算求一个数的n次方5 ** 3125
  • 特性:

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

    # 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
    
    

2. 赋值运算符:变量赋值与更新

  • **概述:**赋值运算符用于将数据或表达式结果存储到变量中,核心是=,并衍生出复合赋值运算符以简化代码。

  • 基本赋值运算符(=

    • 功能:将等号右侧的值(或表达式结果)赋给左侧变量
    • 规则:
      • 左侧必须是变量(如name = 'Alice'正确,'Alice' = name错误)
      • 右侧可以是常量、表达式或已定义的变量(如total = 1 + 2 + 3age = user_age
      • 支持多次赋值,变量最终值为最后一次赋值结果(如x = 1; x = 2,最终x=2
      • 支持 “连等” 给多个变量赋相同值(如a = b = c = 0
      • 支持 “多变量同时赋值”(左侧变量数需与右侧值数一致,如name, age = 'Bob', 20
  • **复合赋值运算符:**复合赋值运算符是算术运算符与=的结合,用于简化 “变量自身更新” 的操作(如num = num + 3可简写为num += 3)。

    运算符等价表达式说明
    +=num += 3num = num + 3变量自增后赋值
    -=num -= 3num = num - 3变量自减后赋值
    *=num *= 3num = num * 3变量自乘后赋值
    /=num /= 3num = num / 3变量自除后赋值(结果为浮点型)
    //=num //= 3num = num // 3变量自整除后赋值
    %=num %= 3num = num % 3变量自取余后赋值
    **=num **= 3num = num ** 3变量自幂次后赋值

注意:Python 没有自增(i++)、自减(i–)运算符,需用i += 1i -= 1替代。

  • 代码示例:
    # 基本赋值运算符
    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 除法的结果是浮点数
    
    

3. 比较运算符:判断数据关系

  • **概述:**比较运算符用于判断两个数据的关系,结果为布尔值(TrueFalse),是流程控制中条件判断的基础。

  • 常用的比较运算符:

    运算符名称功能说明示例结果
    ==等于判断两个值是否相等1 == True2 == 3TrueFalse
    !=不等于判断两个值是否不相等1 != 2'a' != 'a'TrueFalse
    >大于判断左侧是否大于右侧5 > 3True > 1TrueFalse
    <小于判断左侧是否小于右侧3 < 5False < 0TrueFalse
    >=大于等于判断左侧是否大于或等于右侧3 >= 35 >= 10TrueFalse
    <=小于等于判断左侧是否大于或等于右侧2 <= 57 <= 3TrueFalse
  • 特性:

    • 布尔类型在比较运算中,布尔值True等价于整数1False等价于整数0(如True == 1结果为TrueFalse > 0结果为False
    • <=>=表示的是小于或等于 和 大于或等于,所以 3 >= 21 <= 2的结果都是True
    • 整数(int)、浮点数(float)、布尔值(bool)可混合比较(如3 > 2.5结果为True
    • 其他类型(如字符串与整数)不能比较大小(如'2' > 1会报错),但可判断是否相等(结果必为False,如'2' == 2False
  • 字符串之间比较大小的规则:

    • 按字符编码(ASCII/Unicode)从左到右逐个比较,首个不同字符的大小决定整体大小(如'15' < '18',比较第一个字符'1' == '1',再比较第二个字符'5' < '8',结果为True
    • 字符串之间的大小和长短没有必然关系(如'9' > '10',因为首个字符'9' > '1'
    • 规则:空格<数字<大写字母<小写字母<汉字,空格是最小的可见字符
    • 我们一般不会使用字符串进行数字逻辑的比较,而是用于排序
  • 代码示例:

    # 不能使用 = 判断相等
    # 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
    
    

4. 逻辑运算符:组合布尔表达式

  • **概述:**逻辑运算符用于组合或反转布尔值,实现复杂条件判断,包括and(逻辑与)、or(逻辑或)、not(逻辑非),常用于判断条件、循环控制等。
  • 分类:
    • 逻辑与(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
    
    

二、流程控制语句:控制代码执行逻辑

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

1. 顺序语句:默认的执行方式

  • **概述:**Python中默认代码都是从上到下顺序执行的。
  • 代码示例:
    print('hello world')
    print('hello python')
    print('I love python')
    """
    打印结果:
    hello world
    hello python
    I love python
    
    代码永远都是从上到下依次执行的
    """
    
    

2. 分支语句:根据条件执行不同代码

  • 概述:分支语句通过if系列关键字实现 “条件判断”,根据条件是否成立执行不同代码块。Python 用缩进(建议 4 个空格或 Tab)划分代码块,而非大括号。

  • 单条件分支语句

    • 格式:
      if 判断条件:
          条件成立执行的代码块
      
    • 当满足特定条件时执行一段代码,不满足则跳过
  • 对立条件分支语句

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

    • 格式:

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

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

      技巧:Python 支持连续不等式(如60 <= score <= 90),等价于score >= 60 and score <= 90,代码更简洁。

  • 分支语句的嵌套:

    • 格式:
      if 外层条件语句:
          外层条件成立时执行的代码块
          if 内层条件语句:
              内层条件成立时执行的代码块
      else:
          外层条件不成立时执行的代码块
          if 内层条件语句:
              内层条件成立时执行的代码块
      
    • 注意:
      • 只有判断外层分支语句是否成立后,才能执行代码中的内层分支语句
      • 使用场景:只有满足某种条件后才能进行进一步判断时,我们才使用分支语句的嵌套
  • 代码示例:

    # 单条件分支
    # 需求: 判断年龄是否大于等于18岁
    age = int(input('请输入您的年龄: '))  # 比如输入:22
    if age >= 18:
        print('已成年,可独立出行')  # 条件成立,执行此句
    
    # 对立条件分支
    # 需求:判断考试是否通过
    score = 55
    if score >= 60:
        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)
      
      

3. 循环语句:重复执行代码块

  • **概述:**循环语句用于重复执行一段代码(循环体),Python 提供whilefor两种循环,适用场景不同。
  • while循环语句
    • 格式:
      while 判断条件:
          判断条件成立循环执行的代码1
          判断条件成立循环执行的代码2
      
    • 代码示例:
      # 打印1-5
      i = 1
      while i <= 5:
          print(i)
          i = i + 1  # 一定要更新循环变量
      
      
    • 注意:
      • while循环根据条件是否成立重复执行循环体,适用于 “已知结束条件但不确定循环次数” 的场景
      • while循环可以嵌套使用
      • 进行循环嵌套时,内外层循环变量名称不能相同
      • 若未更新循环变量(如忘记i += 1),条件可能永远成立,导致 “死循环”
      • while循环一般用于构造有特定结束条件的循环或死循环
  • for循环语句
    • 概述:for循环也是循环结构的一种,一般和容器类型搭配使用
    • 循环规则:从容器类型中依次获取每一个元素赋值给临时变量,当数据取完则循环终止
    • 格式:
      for 临时变量 in 容器类型数据:
          循环体
      
    • for循环优势:
      • 语法简洁且不容易出错
      • 从容器中遍历数据不需要构造数据,直接可以取用
    • 注意:
      • for循环用于遍历容器类型数据(如字符串、列表、范围range等),依次获取元素并执行循环体,适用于 “已知循环次数” 的场景
      • 循环次数和容器的长度相关
      • 临时变量不要在循环体外使用,因为容器长度为0时,临时变量未定义
    • range函数:
      • range函数就是一个范围函数,内部是根据特定规则生成的整数序列
      • 格式:range(起始位置, 终止位置, 步长)
      • 注意:
        • range函数的范围是一个左闭右开区间,即包含起始位置,不含终止位置
        • range的步长可以省略,省略后默认步长为1(如range(1, 5)等价于1,2,3,4
        • range的起始位置可以省略,省略后默认从0开始(如range(5)等价于0,1,2,3,4
        • range中的参数只能使用整数
    • 代码示例:
      # 1. range从起始位置到终止位置时一个左闭右开区间
      # 创建一个1-9的整数序列
      # 注意: range函数的范围是一个左闭右开区间,从(1,9)代表的范围就是从1-8的整数区间,包含1,不包含9
      num_ran = range(1, 9, 1)
      print(num_ran)  # range(1, 9, 1)
      print(list(num_ran))  # [1, 2, 3, 4, 5, 6, 7, 8]
      print('-'*21)
      
      # 2. range的步长可以省略,省略后默认步长为1
      num_ran = range(1, 9)
      print(num_ran)  # range(1, 9)
      print(list(num_ran))  # [1, 2, 3, 4, 5, 6, 7, 8]
      # 我们使用range只可以创建一定规则的整数序列,所有整数之间步长必须相等,否则无法创建
      print('-'*21)
      
      # 3. range 函数可以省略起始位置,例如 range(10) 默认从 0开始
      num_ran = range(10)
      print(num_ran)  # range(0, 10)
      print(list(num_ran))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      print('-'*21)
      
      # 4. range中的步长可以是任意整数
      num_ran = range(0, 10, 2)
      print(num_ran)  # range(0, 10, 2)
      print(list(num_ran))  # [0, 2, 4, 6, 8]
      # TypeError: 'float' object cannot be interpreted as an integer
      # num_ran = range(0, 10, 2.5)  range中的所有参数,只能使用整型数据
      print('-'*21)
      
      ######################### 配合for循环使用range函数  #############################
      
      # 需求: 打印从1-9的数字
      for i in range(1, 10):
          print(i)
      
      # 需求: 打印从1-9的数字累加和
      sum1 = 0
      for i in range(1, 10):
          sum1 += i
      print(f'1-9的累加和是{sum1}')
      
      # 需求: 打印从1-9的数字中的偶数累加和
      sum1 = 0
      for i in range(1, 10):
          if i % 2 == 0:
              sum1 += i
      print(f'1-9的偶数累加和是{sum1}')
      
      
  • 循环控制语句
    • break:用于终止循环,即执行了break之后跳出循环,直接执行循环后面的代码
    • continue:用于结束本次循环中未执行的内容,直接进入下一次循环
    • 注意:
      • while循环中,如果使用循环变量控制循环的执行,必须在使用continue之前更新循环变量,否则会造成死循环
      • breakcontinue只能控制当前所在的循环,如果在内层循环就控制内层循环的结束和跳过,如果在外层就控制外层循环的结束和跳过
      • breakcontinue只能用在循环体中,否则报错
    • 代码示例:
      # 判断一个数是否是质数,当找到一个因子的时候就说明不是质数,退出循环
      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}是素数')
      
      

三、总结

本文系统介绍了 Python 中的运算符与流程控制语句,涵盖:

  • 算术、赋值、比较、逻辑四类运算符;
  • 顺序、分支、循环三种流程结构;
  • 分支嵌套、三目运算、循环控制等高级用法。
    掌握这些基础内容将为后续函数、面向对象等知识打下坚实基础。建议读者亲自尝试文中的代码示例,加深理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值