运算符与分支结构

运算符

  • 赋值运算符
  • 用'='表示,'='左边只能是变量。
  • 算术运算符
  • +、-、*:加、减、乘
  • /:除法运算,结果为浮点数
  • //:除法运算,结构为整数
  • %:求余
  • **:求幂,也可以使用函数pow
  • 复合运算符
  • +=、-=、*=、/=、//=、%=、**=
  • 示例:a += 3等价于a = a + 3
  • 关系运算符
  • >、>=、<、<=、==、!=
  • 关系表达式:由操作数和关系运算符构成的表达式
  • 关系表达式是有值的:符合数学逻辑为真(True),不符合数学逻辑为假(False)
  • 逻辑运算符
  • 与(and):两边的表达式同时为真,结果才为真
  • 或(or):两边的表达式一个为真,结果就为真
  • 非(not):用于取反表达式的,真变假,假变真
  • 使用not是为了简化书写
  • 经常伴随着隐式类型转换
  • 成员运算符
  • in、not in:判断一个值是否是另一个对象的成员
  • 说明:通常用在字符串、列表、元组、集合、字典等的成员判断
  • 示例:
# 成员运算
lt = [1, 2, 3]
print(1 in lt)
print(4 not in lt)
d = {'name': 'dahua'}
# 对于字典,判断的是键
print('name' in d)
  • 位运算符
  • &:按位与,对应的数据位同时为1,结果上对应的位才为1
  • |:按位或,对应的数据位一个为1,结果上对应的位就为1
  • ^:按位异或,对应的数据位不同结果为1,相同结果为0
  • ~:按位取反,数据的每一位,0变1,1变0
  • <<:按位左移,左移一位相当于乘以2
  • >>:按位右移,右移一位相当于除以2
  • 优先级与结合性
  • 语法中的运算符的优先级与结合性比较杂乱,即使记住了也非常容易忘记。
  • 建议:使用时不用刻意记录运算符的优先级与结合性,当需要明确指定时添加括号即可。

流程控制

  • 说明:
  • 按照程序的执行流程,程序刻意分为三种结构:顺序结构、分支结构、循环结构
  • 顺序结构:代码按照从上到下依次执行,没有语法
  • 代码层次:python中不是通过大括号体现的,而是通过缩进体现的
  • 分支结构(if-else)
  • 格式1:适合于解决生活中的条件执行问题
if 表达式:
    语句块

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

  • 格式2:适合于解决生活中的非此即彼的问题
if 表达式:
    语句块1
else:
    语句块2

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

  • 格式3:适合于解决生活中的多种选择的问题
if 表达式1:
    语句块1
elif 表达式2:
    语句块2
...
else:
    语句块
  1. elif的个数没有限制
  2. else可以省略
  3. 所有的语句块最多只能执行一个

ASCII

  • 说明:美国信息交换标准代码,就是用一个数字表示一个字符
  • 示例:
# 根据字符获取ASCII
print(ord('A'))

# 将ASCII转换为字符
print(chr(65))

列表操作

  • 示例:
lt1 = [1, 2, 3]
lt2 = [4, 5, 6]

print(lt1 + lt2)
print(lt1 * 2)
print(lt1[1:-1])
print(len(lt1))

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

# 获取元素
print(lt[0])

# 修改元素
lt[0] = 100

# 追加:在列表的末尾添加,作为整体添加
lt.append(200)
lt.append([6, 7])
# 扩充:将序列中的元素一个一个添加到列表
lt.extend([300, 400])

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

# 删除:根据下标删除
del lt[0]
# 根据元素进行删除
lt.remove(250)
# 弹出并删除,会返回元素,
# 默认删除最后一个元素,可以指定下标
ele = lt.pop(4)
print(ele)

# 根据元素查第一次出现的下标
print(lt.index(4))

# 统计元素出现的次数
print(lt.count(2))

# 逆序
lt.reverse()

lt = [1, 5, 7, 3, 2]

# 排序:默认是升序,reverse=True会降序排序
lt.sort(reverse=True)

# 清空元素
lt.clear()

print(lt)

元组操作

  • 提示:参考列表操作学习元组操作。

集合操作

  • 示例:
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)

# 差集
print(s1.difference(s2))
# s1.difference_update(s2)
# print(s1)

# 判断是否没有交集
print(s1.isdisjoint(s2))
# 判断是否是另一集合的子集
print(s1.issubset(s2))
# 判断是否是另一集合的超集/父集
print(s1.issuperset(s2))
练习:
  • 从终端获取一个年份,判断是否是闰年,是就打印'xxx年是闰年',不是就打印'xxx年不是闰年'
  • 输入两个整数,打印较大值
  • 输入三个整数,按照从小到大的顺序打印
  • 输入一个三位数,顺序打印个位、十位、百位上的数
  • 输入一个整数,判断是否既能被3整除,又能被7整除
  • 输入一个字符,是大写转换为小写,是小写转换为大写,其它字符原样输出