python 运算符与分支结构

运算符

  • 赋值运算符

    • 用’='表示,左边只能是变量
  • 算术运算符

    • +、-、*:加、减、乘
    • /:除法运算,结果是浮点型
    • //:除法运算,结果是整型
    • %:求余
    • **:求幂
  • 复合运算符

    • +=、-=、*=、/=、//=、%=、**=
    • 示例:a = a+b 等价于 a += b
  • 关系运算符

    • >、<、==、>=、<=、!=
    • 表达式:由操作数和运算符构成的式子
    • 关系表达式:由操作数和关系运算符构成的式子
    • 关系表达式是有值的:符合数学逻辑值为真(True),不符合数学逻辑值为假(False)
  • 逻辑运算符

    • 与(and):两边的表达式同时为真,结果才为真

      a = 20
      print(a >= 0 and a <= 100)
      # python特有的写法
      print(0 <= a <= 100)
      b = 10
      print(b%3==0 and b%5==0)
      
    • 或(or):两边的表达式一个为真,结果就为真

      # 判断闰年
      year = int(input('请输入一个年份:'))
      print((year%4==0 and year%100!=0) or (year%400==0))
      
    • 非(not):用于取反表达式,真变假,假变真

      • 逻辑非经常伴随着隐式类型转换
      • 很多时候是为简化表达式的书写
  • 成员运算符

    • in、not in:判断一个变量是否在/不在另一个变量中

    • 一般用在字符串、列表、元组、集合、字典等成员的判断

    • 示例:

      lt = [1, 2, 3]
      print('in:', 8 in lt)
      print('not in:', 8 not in lt)
      
      d = {'name': 'xiaoming', 'age': 20}
      # 字典:判断键是否存在
      print('name' in d)
      
  • 位运算符(了解)

    • &:按位与,对应的数据位同时为1,结果才为1

      0b1010
      0b1100   &
      -----------
      0b1000
      
    • |:按位或,对应的数据位一个为1,结果就为1

    • ^:按位异或,对应的数据位相同时值为0,不同时值为1

    • ~:按位取反,对应的数据位,1变0,0变1

    • <<:按位左移,左移一位相当于乘2

    • 》:按位右移,右移一位相当于除2

  • 优先级与结合性

    • python语法中没有明确规定运算符的优先级与结合性,即使提供了明确说明你也不一定能记住
    • 建议:使用时不用刻意记录运算符的优先级与结合性问题,实在不行添加()即可解决

流程控制

  • 说明:

    • 按照程序的执行流程,程序可以分为三种结构:顺序结构、分支结构、循环结构
    • 顺序结构:就是代码按照从上到下的顺序依次执行,没有语法要求
    • 代码层次:python中代码块不适于大括号区分,而是使用缩进来完成

分支结构(if-else)

- 格式1:适合于选择执行的情况

```python
if 表达式:
	语句块
```

> 执行流程:当程序执行到if语句时,首先判断表达式的真假。若表达式的值为真,则执行对应的语句块;若表达式的值为假,则跳过语句块,之后后面的内容

- 格式2:适合于解决生活中非此即彼的问题

```python
if 表达式:
	语句块1
else:
	语句块2
```

> 执行流程:当程序执行到if-else语句时,首先判断表达式的真假。若表达式的值为,则执行语句块1;若表达式的值为假,则执行else后面的语句块(语句块2)。

- 格式3:适合于解决生活中多种选择的问题

```python
if 表达式1:
	语句块1
elif 表达式2:
	语句块2
。。。
else:
	语句块
```

> 1. elif的个数没有限制
> 2. else可以省略不写
> 3. 每一部分的语句块都不可能同时执行,最多执行一个

循环结构(while)

  • 格式

    while 表达式:
    	语句块
    

    执行流程:当程序执行到while语句时,首先判断表达式的真假。若表达式的值为真,则执行对应的语句块,之后返回while继续判断表达式的真假;若表达式的值为假,则跳过语句块,跳过while。

  • 说明:

    • 表达式:也叫循环条件
    • 语句块:也叫循环体
    • 死循环:表达式的值一直为真,称为死循环
    • break:结束循环的执行(立即跳出循环)
    • continue:结束本次循环,直接进入下次循环
    • else:结合while使用
    i = 1
    while i <= 10:
        print(i)
        i += 1
        break
    else:
        # 循环正常退出会执行,非正常(break)退出时不会执行
        print('while正常结束')
    

循环结构(for-in)

  • 说明:也是一种循环结构,常用于遍历可迭代的对象,如:字符串、列表、元组、字典、集合

  • 格式:

    for x in y:
    	循环体
    

    执行流程:x依次表示y中的一个元素,遍历完所有元素后结束循环。

  • 示例:遍历字符串、列表、字典

列表生成式

  • 可迭代对象:列表、元组、字典等都是可迭代对象,可以遍历的对象

  • range函数:

    print(range(10))
    print(range(0, 10))
    
    # range保存的是范围内的连续整数的生成方式
    # 可以遍历
    for i in range(10):
        print(i)
    
    # 可以转换为列表
    lt = list(range(10))
    print(lt)
    
  • 列表生成式:可以快速生成有特定规律的列表

    # print([i for i in range(1, 11)])
    # print([i*2 for i in range(1, 11)])
    # print([i*i for i in range(1, 11)])
    # print([str(i) for i in range(1, 11)])
    print([i for i in range(1, 11) if i%2==0])
    

循环的嵌套

  • 示例:

    '''
    从终端输入一个整数n,打印如下图形
    1
    1 2
    1 2 3
    1 2 3 4
    ...
    1 2 3 4 ... n
    '''
    
    # 外层循环控制打印多少行
    i = 1
    while i < n+1:
        # 内层循环控制每一行的打印
        j = 1
        while j <= i:
            print(j, end='')
            j += 1
        i += 1
        print()
       
    

双重循环

  • 冒泡排序

    lt = [1, 5, 7, 3, 2, 4]
    
    # 计算元素的个数
    n = len(lt)
    # 外层循环控制圈数
    for i in range(n-1):
        for j in range(n-1-i):
            # 不合适,交换数据
            # 此处是升序排序,若想降序需要将 > 改为 <
            if lt[j] > lt[j+1]:
                # 其他语言
                # temp = lt[j]
                # lt[j] = lt[j+1]
                # lt[j+1] = temp
                # python特有
                lt[j], lt[j+1] = lt[j+1], lt[j]
    
    print(lt)
    
  • 选择排序

    思想:
    	取出第一个元素,依次与后面的元素进行比较,不合适交换位置,直至比较结束,一轮可以确定开头一个
    	每轮确定一个元素,依次向后,n个元素需要n-1轮比较
    lt = [1, 4, 2, 8, 6, 5]
    n = len(lt)
    for i in range(n-1):
        for j in range(1+i,n):
            if lt[i] > lt[j]:
                lt[i], lt[j] = lt[j], lt[i]
    print(lt)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值