python_ 运算符与分支结构

# 运算符与分支结构

### 运算符

- 赋值运算符

  - 用'='表示,左边只能是变量。

- 算术运算符

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

- 复合运算符

  - +=、-=、*=、/=、//=、%=**=
  - 示例:`a += b`等价于`a = a + b`

- 关系运算符

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

- 逻辑运算符

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

  ```python
  a = 20
  # 通用写法
  # print(a>=10 and a<=100)
  # 特有写法
  print(10 <= a <= 100)

  b = 10
  print(b%3 == 0 and b%5 == 0)
  ```

  - 或(or):两边的表达式一个为真,结果就为真。

  ```python
  year = int(input('请输入一个年份:'))
  print((year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))
  ```

  - 非(not):用于取反表达式,真变假,假变真。
    - 经常伴随着隐式类型转换
    - 使用not是为了简化书写

- 成员运算符

  - in、not in:判断一个值是否在另一个变量中
  - 说明:通常用在字符串、列表、元组、集合、字典等成员的判断
  - 示例:

  ```python
  lt = [1, 2, 3]
  print(8 in lt)
  print(8 not in lt)
  d = {'name': 'ergou', 'age': 18}
  ```


  # 字典成员判断的是键
  print('name' in d)
  ```python

- 位运算符(了解)

  - &:按位与,对应的数据位同时为1,结果上对应的位才为1
  - |:按位或,对应的数据位一个为1,结果上对应的位就为1
  - ^:按位异或,对应的数据位相同时结果上的位为0,不同时结果上位为1
  - ~:按位取反,数据的每一位,0变1,1变0
  - <<:按位左移,左移一位相当于乘以2
  - >>:按位右移,右移一位相当于除以2

- 优先级与结合性

  - 语法中没有明确规定运算符的优先级与结合性,即使明确说了你也不一定能记得住。
  - 建议:使用时不用刻意记录优先级与结合性,当需要明确指定时添加括号即可。


### 流程控制

- 说明:

  - 按照程序的执行流程,程序可以分为三种结构:顺序结构、分支结构、循环结构
  - 顺序结构:代码按照从上到下的顺序依次执行,没有语法要求。
  - 代码层次:python中的代码块不是通过大括号表示的,而是通过缩进来表示。

- 分支结构(if-else)

  - 格式1:适合于生活中的条件执行问题

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

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

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

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

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

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

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

  > 1. elif的个数没有限制
  > 2. else可以省略
  > 3. 所有的语句块最多只能执行一个

### 字符串格式化

- 示例:

  ```python
  name = '二狗'
  like = '王大花'
  age = 18
  # 格式化
  # %s:字符串
  # %d:整数
  # %f:浮点
  # %c:字符
  print('俺叫%s,暗恋%s,她今年%d岁' % (name, like, age))

  # python特有的格式化方案,推荐使用
  print('俺叫{},暗恋{},她今年{}岁'.format(name, like, age))
  print('俺叫{2},暗恋{1},她今年{0}岁'.format(name, like, age))
  print('俺叫{l},暗恋{n},她今年{a}岁'.format(n=name, l=like, a=age))
  ```

### ASCII

- 说明:美国信息交换标准代码,就是用一个数字代表一个字符的表示形式。

- 函数:

  ```python
  # 根据字符获取ASCII码
  print(ord('A'))
  # 根据ASCII码的值获取字符
  print(chr(97))
  ```

### 列表操作

- 示例:

  ```python
  lt = [1, 2, 3, 4, 5]

  print(lt[0])
  print(lt[-1])
  print(lt[1:3])
  print(len(lt))

  # 修改
  lt[0] = 100

  # 追加,在列表的末尾添加
  # lt.append(200)
  # 整体作为一个元素添加
  # lt.append([200, 300])
  # 将可迭代对象中的每一个元素依次添加到列表
  lt.extend([200, 300])

  # 在指定位置插入元素
  lt.insert(2, 250)

  # 删除
  # 根据下标删除元素
  del lt[0]
  # 根据值进行删除
  lt.remove(250)
  # 返回并删除执行下标的元素,默认最后一个
  last = lt.pop(3)
  print(last)

  lt = [1, 2, 3, 4, 5, 1]
  # 根据元素,查找下标(第一个)
  print(lt.index(1))
  # 统计元素出现的次数
  print(lt.count(1))

  # 逆序
  lt.reverse()
  print(lt)

  lt = [5, 8, 3, 1, 9]
  # 排序,默认升序,可以通过reverse参数指定倒序排
  lt.sort(reverse=True)
  print(lt)
  ```

### 集合操作

- 示例

  ```python
  s = {'生辉', '学轩', '俊峰', '鹏基', '二狗'}

  # 添加元素
  s.add('晓富')

  # 删除
  # s.remove('二狗')
  # 删除不存在的元素时会报KeyError错
  # s.remove('狗蛋')
  # 有就删除,没有也不报错
  # s.discard('狗蛋')

  # 返回并删除
  # print(s.pop())

  # 清空元素
  s.clear()

  # print(s)

  s1 = {'小马', '小芳', '小敏'}
  s2 = {'小杜', '小王', '小敏'}

  # 并集,捕获改变原集合
  # print(s1.union(s2))

  # 交集,不会改变原集合
  # print(s1.intersection(s2))
  # 交集,然后覆盖原集合
  # s1.intersection_update(s2)

  # 差集,不会改变原集合
  # print(s1.difference(s2))
  # 差集,然后覆盖原集合
  # s1.difference_update(s2)

  # print(s1)

  # 判断是否没有交集
  print(s1.isdisjoint(s2))

  # 判断是否是另一集合的子集
  print(s1.issubset(s2))

  # 判断是否是另一集合的父集/超集
  print(s1.issuperset(s2))
  ```

### 字典操作

- 示例

  ```python
  d = {'name':'ergou','age':18}

  #获取成员
  print(d.get('name','默认'))

  #修改元素
  #元素存在直接更改
  #d['name'] = '二狗'
  #元素不存在则添加
  #d['height'] = 180

  #更新,存在的覆盖,不存在的添加
  #d.update({'name':'二狗','height': 180})

  #删除
  #del d['age']
  #返回后删除
  #print(d.pop('age'))

  #清空
  #d.clear()

  print(d)
  ```

### 练习:

- 从终端获取一个年份,判断是否是闰年,是就打印'xxx年是闰年',不是就打印'xxx年不是闰年'

- ```python
  s = int(input("请输入一个年份:"))
  if s % 100 !=0 and s%4 ==0 or s % 400 == 0  :
       print(s,"年是闰年")
  else:
       print(s,"年不是闰年")
  ```

- 输入两个整数,打印较大值

- ```python
  i = int(input("请输入一个整数:"))
  j = int(input("请输入一个整数:"))
  if  i > j :
       print(i)
  else:
       print(j)b
  ```

- 输入三个整数,按照从小到大的顺序打印

- ```python
  i = int(input("请输入一个整数:"))
  j = int(input("请输入一个整数:"))
  b = int(input("请输入一个整数:"))
  lt = []
  lt.append(i)
  lt.append(j)
  lt.append(b)
  lt1 = sorted(lt)
  print(lt1[0],lt1[1],lt1[2])
  ```

- 输入一个三位数,顺序打印个位、十位、百位上的数

- ```python
  i = int(input("请输入一个整数:"))
  print(int(i%10,),int(i%100//10,),int(i//100,))
  ```

- 输入一个整数,判断是否既能被3整除,又能被7整除

- ```python
  i = int(input("请输入一个整数:"))
  print()
  if i % 3 ==0 and i % 7 ==0 :
      print(i,"既能被3整除,也能被7整除")
  else:
      print(i,"不能即被3整除,又被7整除")
  ```

- 输入一个字符,是大写转换为小写,是小写转换为大写,其它字符原样输出

- ```
  i = input("请输入一个字符:")
  print(i.swapcase())
  ```

  ​



猜你喜欢

转载自blog.csdn.net/qq_42938842/article/details/82531026