运算符与流程控制

运算符

  • 赋值运算

    • 用 ‘=’ 表示,’=’ 的左边只能是变量
  • 算数运算

    • +、-、*:加、减、乘
    • /:除法运算,运算结果为浮点数
    • //:除法运算,运算结果为整数(商)
    • %:求余
    • **:求幂
      1
      2
      3
      4
      5
      6
      7
      a = 10
      b = 4

      print(a/b)
      print(a//b)
      print(a%b)
      print(2**3)
  • 符合运算

    • +=、-=、*=、/=、//=、%=、**=
      1
      2
      3
      4
      5
      6
      7
      a = 10
      b = 4

      # a = a + b
      # 等同于上式
      a += b
      print(a)
  • 关系运算(比较运算)

    • >、>=、<、<=、==、!=
    • 由操作数和运算符组成的式子称为表达式
    • 关系表达式是有值的,符合数学逻辑值为True,不符合数学逻辑值为False
      1
      2
      3
      a = 10
      b = 4
      print(a != b)
  • 逻辑运算

    • 与(and):两边的表达式同时为真,值才为真
      1
      2
      3
      4
      5
      6
      a = 10
      print((a >= 100) and (a <= 200))
      # 与上式等价
      print(100 <= a <= 200)
      # 判断是否既是3的倍数又是5的倍数
      print((a % 3 == 0) and (a % 5 == 0))
    • 或(or):两边的表达式一个为真,值就为真
      1
      2
      3
      # 判断是否是闰年
      y = int(input('请输入一个年份:'))
      print(((y % 4 == 0) and (y % 100 != 0)) or (y % 400 == 0))
    • 非(not):用于取反表达式,真变假,假变真
      • 逻辑非运算经常会伴随着隐式类型转换
      • 很多时候是为了简化表达式
        1
        2
        a = 10
        print(not a)
  • 成员运算

    • in、not in:判断一个变量是否是另一个变量的成员,是返回True,不是返回False
    • 一般用在字符串、列表、元组、集合、字典等成员的判断
    • 若是字典判断的是键
      1
      2
      3
      4
      l = ['李白', '杜甫', '白居易', '欧阳修']
      print('李白' in l)
      d = {'a': 'apple', 'b': 'banana', 'c': 'cat', 'd': 'dog'}
      print('a' not in d)
  • 按位运算(了解)

    • &:按位与,对应的数据同时为1,值才为1
    • |:按位或,对应的数据一个为1,值就为1
    • ^:按位异或,对应的数据相同时值为0,不同时值为1
    • ~:按位取反,对应的数据1变0,0变1
    • <<:按位左移,相当于乘2
    • >>:按位右移,相当于除2
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      a = 0b10101
      b = 0b01011
      print(a & b)
      print(a | b)
      print(a^b)

      a = 0b01
      '''
      补码: 0000 0001
      (按位取反)补码: 1111 1110
      反码: 1111 1101
      原码: 1000 0010
      '''
      print(~a)
      print(a<<1)

      优先级:无需记录运算符的优先级,需要的时候添加()即可

流程控制

  • 按照程序的执行流程,程序可以分为三种结构:顺序结构、分支结构、循环结构python中的代码层次是通过缩进表现的
  • 顺序结构:代码从上到下,依次执行,没有语法要求

  • 分支结构:if-else

    • 格式1:
      1
      2
      if 表达式:
      语句块
      执行流程:当程序执行到if语句时,首先要判断表达式的真假;若表达式的值为真(True),则执行语句块;若表达式的值为假(False),则跳过语句块,继续向下执行。
      1
      2
      3
      4
      # 判断一个数是否是3的倍数
      num = int(input('请输入一个整数:'))
      if num % 3 == 0:
      print('%d是3的倍数' % num)
    • 格式2:
      1
      2
      3
      4
      if 表达式:
      语句块1
      else
      语句块2
      执行流程:当程序执行到if-else语句时,首先判断表达式的真假;若表达式的值为真,则执行语句块1;若表达式的值为假,则执行else后边的语句块2。
      1
      2
      3
      4
      5
      6
      # 判断闰年
      y = int(input('请输入一个年份:'))
      if ((y % 4 == 0) and (y % 100 != 0)) or (y % 400 == 0):
      print('%d年是闰年' % y)
      else:
      print('%d年不是闰年' % y)
    • 格式3:
      1
      2
      3
      4
      5
      6
      7
      if 表达式1:
      语句块1
      elif 表达式2:
      语句块2
      ...
      else:
      语句块n
      1. elif的个数不限
      2. else可以不写
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      # 判断学生成绩级别
      score = int(input('请输入一个分数:'))
      if score >= 90:
      print('A:优秀')
      elif score >= 80:
      print('B:良好')
      elif score >= 70:
      print('C:中等')
      elif score >= 60:
      print('D:及格')
      else:
      print('请把家长叫来!')
      • 练习:
        1
        2
        3
        4
        5
        1.输入两个数,打印较大的那个值
        2.输入三个数,按照从小到大的顺序打印
        2.输入一个三位数,打印其个位、十位、百位上的数
        4.输入一个年份,判断是否为闰年,是打印一句话,不是打印赢一句话
        5.输入一个整数,判断其是否既能被 3 整除,又能被 5 整除
  • 循环结构(while):

    • 格式:
      1
      2
      while 表达式:
      语句块
      执行流程:当程序执行到while语句时,首先判断表达式的真假。当表达式的值为真时,执行语句块,之后返回while,继续判断表达式的真假;若表达式为假,则跳过语句块。
      1. 表达式也叫循环条件
      2. 语句块也叫循环体
      3. 表达式一直成立称为死循环
        1
        2
        3
        4
        5
        6
        7
         # 1 + 2 + 3 + ... + 100 = ?
        i = 1
        s = 0
        while i <= 100:
        s += i
        i += 1
        print(s)
      4. break:跳出循环
      5. continue:结束本次循环,进入下次循环
      6. 结合else使用:循环正常退出,执行else后的语句块;非正常(break)退出,则不执行else语句块。
        1
        2
        3
        4
        5
        6
        7
        i = 1
        while i <= 10:
        print(i)
        i += 1
        break
        else:
        print('结束')
      • 练习:
        1
        2
        3
        4
        5
        1.计算 1~100 之间所有整数的和
        2.打印字符 a~z
        3.打印字符 Z~A
        4.循环输入 10 个字符,大写转为小写,小写转为大写,其他字符不处理
        5.思考:循环能否嵌套,想一想其应用场景及执行流程