流程控制即控制流程,具体指控制程序的执行流程。而程序的执行流程分为三种结构: 顺序结构、分支结构、循环结构 。
分支结构
分支结构就是根据 条件判断的真假去执行不同分支对应的子代码 ,可以使用 if关键字 来实现分支结构,该语句的核心是一个值为布尔类型的表达式,这个表达式称为条件测试,Python根据条件测试的值来决定是否执行if语句中的代码。如果为True,则执行紧跟在if语句后面的代码;如果为false,则忽略。简单的if语法如下:
if 条件:
do something
第1行if关键字后面可以包含任何条件测试,紧跟在测试后面的缩进代码块中可以执行任何操作。如果条件测试的结果为True,则执行if后面缩进的代码块中的代码,否则忽略:
age = 17
if age <18:
print("未成年")
# 输出&#xff1a;未成年
注意&#xff1a;
python用相同缩进(4个空格表示一个缩进)来标识一组代码块&#xff0c;同一组代码会自上而下依次运行
条件可以是任意表达式&#xff0c;但执行结果必须为布尔类型
在if判断中所有的数据类型也都会自动转换成布尔类型&#xff0c;其中 None&#xff0c;0&#xff0c;空(空字符串&#xff0c;空列表&#xff0c;空字典等) 三种情况下转换成的布尔值为False&#xff0c;其余均为True
还可以使用 if-else语句 实现当条件测试通过的时候执行一个操作&#xff0c;在没有通过的时候执行另外一个操作&#xff1a;
age &#61; 19
if age <18:
print("未成年")
else:
print("成年人")
# 输出&#xff1a;成年人
有时候检查的情形会超过两个&#xff0c;此时可以使用 if-elif-else结构 。python只执行if-elif-else结构中的一个代码块&#xff0c;它依次检查每个条件测试&#xff0c;直到遇到通过了条件的测试&#xff0c;测试通过后python就会执行紧跟在后面的缩进代码&#xff0c;并跳过余下的测试&#xff1a;
age &#61; 17
if age <3:
print("婴儿")
elif age <7:
print("幼儿")
elif age <18:
print("少年")
elif age <40:
print("青年")
elif age <60:
print("中年")
else:
print("老年")
注意&#xff1a;
elif可以有多个
最后的else可以省略
if语句是可以嵌套的&#xff1a;
age &#61; 17
gender &#61; 1
if age <18:
if gender &#61;&#61; 1:
print("女孩")
else:
print("男孩")
else:
if gender &#61;&#61; 1:
print("女人")
else:
print("男人")
# 输出&#xff1a;女孩
循环结构
循环结构就是重复执行某段代码块。
while循环
while循环的基本语法格式如下&#xff1a;
while 条件:
代码1
代码2
while的运行步骤&#xff1a;
步骤1&#xff1a;如果条件为真&#xff0c;那么依次执行&#xff1a;代码1、代码2、代码3、……
步骤2&#xff1a;执行完毕后再次判断条件&#xff0c;如果条件为True则再次执行&#xff1a;代码1、代码2、代码3、.....&#xff1b;如果条件为False则循环终止
while循环退出条件
1. 使用判断
number &#61; 10
while number > 5:
print(number, end&#61;" ")
number -&#61; 1
# 输出 10 9 8 7 6
2. 使用标记
在复杂的程序中会存在很多不同的事件导致while停止运行&#xff0c;这时候可以定义一个变量&#xff0c;用于判断整个程序是否处于活动状态&#xff0c;这个就称为标志&#xff1a;
number &#61; 10
flag &#61; True
while flag:
print(number, end&#61;" ")
number -&#61; 1
if number <&#61; 5:
flag &#61; False
# 输出 10 9 8 7 6
3. break语法
python提供了break语句来结束while循环&#xff1a;
number &#61; 10
while True:
print(number, end&#61;" ")
number -&#61; 1
if number <&#61; 5:
break
# 输出 10 9 8 7 6
但是while循环是可以嵌套使用的&#xff0c;而break语法只能结束本身所在的while的循环&#xff0c;不能结束其它层级的while循环&#xff1a;
number2 &#61; 5
while number2 > 0:
number &#61; 10
while True:
print(number, end&#61;" ")
number -&#61; 1
if number <5:
break
number2 -&#61; 1
print()
# 输出
# 10 9 8 7 6 5
# 10 9 8 7 6 5
# 10 9 8 7 6 5
# 10 9 8 7 6 5
# 10 9 8 7 6 5
此时可以使用其它方法结束外层的循环&#xff0c;比如可以使用标签&#xff1a;
number2 &#61; 5
flag &#61; True
while number2 > 0 and flag:
number &#61; 10
while True:
print(number, end&#61;" ")
number -&#61; 1
if number <5:
flag &#61; False
break
number2 -&#61; 1
print()
# 输出
# 10 9 8 7 6 5
4. continue语法
break代表结束本层循环&#xff0c;而continue则用于 结束本次循环 &#xff0c;直接进入下一次循环&#xff1a;
number &#61; 10
while number > 0:
if number % 2 &#61;&#61; 0:
number -&#61; 1
continue
print(number, end&#61;" ")
number -&#61; 1
# 结果是&#xff1a;9 7 5 3 1
while &#43; else用法
在while循环的后面可以跟上else语句&#xff0c;当while 循环正常执行完并且中间没有被break 中止的话&#xff0c;就会执行else后面的语句&#xff0c;否则就不执行。所以我们可以用else来验证循环是否正常结束&#xff1a;
number1 &#61; 5
while number1 > 0:
print(number1, end&#61;" ")
number1 -&#61; 1
else:
print("全部打印完毕.....")
# 5 4 3 2 1 全部打印完毕.....
number2 &#61; 5
while number2 > 0:
if number2 % 2 &#61;&#61; 0:
print(number2)
break
number2 -&#61; 1
else:
print("全部打印完毕.....")
# 4
for循环
循环结构的第二种实现方式是for循环&#xff0c;for循环可以做的事情while循环都可以实现&#xff0c;之所以用for循环是因为在循环取值(即遍历值)时for循环比while循环的使用更为简洁。for循环的基本语法如下&#xff1a;
for 变量名 in 可迭代对象:
代码1
代码2
....
for循环的运行步骤如下&#xff1a;
步骤1&#xff1a;从可迭代对象中读出第一个值赋值给变量&#xff0c;然后执行循环体代码
步骤2&#xff1a;从可迭代对象中读出第二个值赋值给变量&#xff0c;然后执行循环体代码
步骤3: 重复以上过程直到可迭代对象中的值读尽
# for循环迭代数字
for number in range(10):
print(number, end&#61;" ")
print()
# for循环迭代列表
for number in [1, 2, 3, 4]:
print(number, end&#61;" ")
print()
# 迭代元祖
for number in (1, 2, 3, 4):
print(number, end&#61;" ")
print()
# 迭代集合
for number in {1, 2, 3, 4}:
print(number, end&#61;" ")
print()
# 迭代字典
for key in {"name": "Tom", "age": 18}:
print(key, end&#61;" ")
# 0 1 2 3 4 5 6 7 8 9
# 1 2 3 4
# 1 2 3 4
# 1 2 3 4
# name age
for循环也支持break和continue语法&#xff0c;它们的作用和while循环中的一样&#xff0c;分别用来终止循环和跳过本次循环&#xff1a;
# for循环中使用continue
for number in range(10):
if number % 2 &#61;&#61; 0:
continue
print(number, end&#61;" ")
# 上面的输出&#xff1a; 1 3 5 7 9
print()
# for循环中使用break
for number in range(10):
if number % 2 &#61;&#61; 0:
break
print(number, end&#61;" ")
# 什么都不输出
for循环也可以嵌套使用&#xff1a;
# for循环嵌套
for i in range(9):
for j in range(9):
if j > i:
break
print(f"{i &#43; 1}*{j &#43; 1}&#61;{ ( i &#43; 1 ) * ( j &#43; 1 ) } ", end&#61;"\t")
print()
# 1*1&#61;1
# 2*1&#61;2 2*2&#61;4
# 3*1&#61;3 3*2&#61;6 3*3&#61;9
# 4*1&#61;4 4*2&#61;8 4*3&#61;12 4*4&#61;16
# 5*1&#61;5 5*2&#61;10 5*3&#61;15 5*4&#61;20 5*5&#61;25
# 6*1&#61;6 6*2&#61;12 6*3&#61;18 6*4&#61;24 6*5&#61;30 6*6&#61;36
# 7*1&#61;7 7*2&#61;14 7*3&#61;21 7*4&#61;28 7*5&#61;35 7*6&#61;42 7*7&#61;49
# 8*1&#61;8 8*2&#61;16 8*3&#61;24 8*4&#61;32 8*5&#61;40 8*6&#61;48 8*7&#61;56 8*8&#61;64
# 9*1&#61;9 9*2&#61;18 9*3&#61;27 9*4&#61;36 9*5&#61;45 9*6&#61;54 9*7&#61;63 9*8&#61;72 9*9&#61;81