2.6流程控制语句
2.6.1顺序结构语句
代码是从上向下逐行运行的
2.6.2 分支结构语句
分为三种格式的,这三种格式分别是
-
单分支
语法:
if 条件表达式: 满足条件执行的代码块
语境: 如果达到了某个条件,就去做某件事
:缩进
代表Python中代码块的包含体, 满足要求执行的代码要统一缩进 体现出来包含的关系 -
双分支
语法:
if 条件表达式: 满足条件执行的代码块 else: 不满足条件执行的代码块
语境: 如果满足某个条件做事情A,否则做事情B
-
多分支
语法:
if 条件表达式1: 满足条件1执行的代码块 elif 条件表达式2: 不满足条件1 但是满足条件2执行的代码块 elif 条件表达式3: 满足条件3 但是不满足条件1和2执行的代码块 ... else: 以上条件都不满足执行的代码块
语境: 如果满足条件1,就做事情A,否则如果满足条件2,就做事情B…
语句嵌套
在满足某种要求的基础上,还需要再进行逻辑判断才可以确定结果
Python中的三元运算符
格式:表达式1 if 条件表达式 else 表达式2
解读:判断if后面的表达式是否成立,如果成立的话执行表达式1,否则执行表达式2
隐式布尔转换
隐隐式布尔转换:把非布尔类型的数据当做布尔类型判定逻辑【数据本身没有变化】,这种行为称为隐式布尔类型转换
# ch = input('请输入一个字符:')
# # ch 是什么类型的数据??? 字符串【容器型的 转换规则:非空容器即为True】
# if ch: # 隐式布尔转换
# print(ch)
# else:
# print('没有输入内容')
# 判断一个数是否为偶数
# num = int(input('请输入一个整数:'))
# if num % 2: # %2的结果为0或者1, 数值转换为布尔类型 非0即为True
# print('奇数')
# else:
# print('偶数')
# 把非布尔类型的数据参与逻辑运算符的运算
print(not 1) # False
"""
and 执行过程
True and True = True
True and False = False
False and False = False
False and True = False
执行机制是左边表达式成立,结果取决于右边表达式;左边表达式不成立,结果就是左边表达式的值
"""
# max_value = num1 if num1 > num2 and num1 > num3 else (num2 if num2 > num3 else num3)
# num1 > num2 and num3 能否写成这样????? 不能!!!!!!
# 这样写 and 右边的表达式不是布尔值 而是一个非布尔类型的数据
num1 = 17
num2 = 15
num3 = 27
res = num1 > num2 and num1 > num3
print(res) # False
"""
and 左边的表达式的结果为真
所以最终的结果 等于 右边表达式的值
"""
res1 = num1 > num2 and num3
"""
and 左边的表达式的结果为真
所以最终的结果 等于 右边表达式的值
"""
print(res1) # 27
max_value = num1 if num1 > num2 and num1 > num3 else (num2 if num2 > num3 else num3)
# 但是 条件写成
# max_value = num1 if num1 > num2 and num3 else (num2 if num2 > num3 else num3)
"""
执行机制:左边表达式成立,结果就是左边表达式的值;左边表达式不成立,解决取决于右边表达式的值
"""
# 非布尔类型的数据参与逻辑运算的时候 和 布尔类型的数据参与逻辑运算不一样的
# 因为布尔类型的值只有两个 True或者False 参与逻辑运算结果 也就只有两个 要么为True 要么为False
# 但是非布尔类型的数据 ,因为有一个隐式转换规则 结果又取的是表达式的 这个结果不一定是True或者False
res = 1 or 0
print(res)
2.6.3 循环结构语句
循环:周而复始重复的做某件事
编程语言中对一直重复做某件事没有终止的情况下称为死循环,但是编程语言中是禁止死循环
在编程语言中见到的循环通常是两种情况
- 明确循环次数【重复做几次之后就不做了】
- 明确循环结束的条件
Python为这两个场景的循环提供了对应的循环机制,分别是
-
for-in循环,应用与明确循环次数的
本质是在遍历容器型的数据,【遍历:将容器中的数据从左向右逐个取出】,容器中有几个数据,for-in包含的操作就被被执行几次
语法:
for 变量名 in 容器型数据: 重复操作的代码块
解读:重点在与
in
[进入], 进入容器中获取数据1. 有数据,获取出来赋值给变量名 然后进行重复的操作,再次执行`in`
- 没有数据 循环结束了
-
while循环,应用于明确循环结束条件的
语法:
while 条件判断: 重复操作的代码块
解读:判断条件是否成立
- 条件成立,执行重复的操作,再次判断条件是否成立
- 条件不成立,循环结束
range功能
用来产生等差数列的,这个结果也是容器型的一个数据,是range类型的
什么叫等差数列? 数据是递增或者递减 【递增或者递减的数据的差值-步长,在整个数据序列中是一致的】
注意:range只能产生整数的等差数列
格式1: range(stop结束值)
序列中的数值是从0开始步长为1的递增到stop[不包含]的数列
比如 range(10) ===> 0 1 2 3 4 5 6 7 8 9
格式2: range(start起始值, stop结束值)
序列中的数值是从start[包含]开始步长为1的递增到stop[不包含]的数列
比如: range(1, 11) ===> 1 2 3 4 5 6 7 8 9 10
格式3:range(start起始值, stop结束值, step步长)
step为正数 表示递增的数列 start < stop
step为负数 表示递减的数列 start > stop
从start[包含]开始 以步长 step 递增或者递减到 stop[不包含]的数列
比如: range(1, 11, 2) ===> 1 3 5 7 9
range(1, 100, 10) ====> 1 11 21 31 41 51 61 71 81 91 [可以理解为100以内 个位数为1的数据]
range(10, 0, -2) ====> 10 8 6 4 2
``