python之流程控制
- 流程控制理论
- 什么是流程控制
- 执行流程的分类
- 顺序结构
- 分支结构
- 循环结构
- 必知必会
- 分支结构之if语句
- 单if分支
- if与else分支
- if与elif与else分支
- if的嵌套
- if的练习题
- 题目
- 答案
- 循环结构之while循环
- 循环结构之for循环
- break与continue
- break的应用
- continue的应用
- 作业
- 答案
流程控制理论
什么是流程控制
流程控制其实就是控制事物的执行流程
执行流程的分类
顺序结构
顺序结构是最简单的程序结构,它是从上往下依次执行的。
分支结构
分支结构就是根据某些条件的判断做出不同的执行流程。
循环结构
循环结构就是根据某些条件的判断循环反复的做相同的事情,直到有一个循环结束的条件。
必知必会
-
在python当中,我们都是使用缩减来表示代码的从属关系,比如:
if True: 语句1 语句2 语句3这段代码中语句1和语句2都是附属于if语句的,语句3是与if同一级别的,我们也可以称语句1和语句2是if语句的子代码。
-
并不是所有的代码都可以有子代码的,如果一行代码的结尾是冒号结束,那么下一行必定是这行代码的子代码。
-
如果多行代码属于同一个父代码,那么这个多行代码需要保证相同的缩进。在python中推荐使用四个空格来表示缩进,或者是按Tab键来缩进。
-
具有相同缩进量的代码彼此之间按照顺序结构执行。
分支结构之if语句
单if分支
语法结构:
if 判断条件:
执行语句
...
这段语法表示:当判断条件成立时,执行后面的语句。
举例:
# 如果age大于等于18,则打印“已成年”
if age >= 18:
print('已成年')
if与else分支
语法结构:
if 判断条件:
语句1
...
else:
语句2
...
这段语法表示:当判断条件成立时,执行语句1,否则执行语句2。
举例:
# 如果age大于等于18,则打印“已成年”,否则打印“未成年”
if age >= 18:
print('已成年')
else:
print('未成年')
if与elif与else分支
语法结构:
if 条件1:
语句1
...
elif 条件2:
语句2
...
elif 条件3:
语句3
...
else:
语句4
...
这段代码表示:当满足条件1时,执行语句1;当不满足条件1,满足条件2时,执行语句2;当不满足条件1,且不满足条件2时,满足条件3时,执行语句3;当以上条件都不满足时,执行语句4。
举例:
# 年龄划分
if age < 18: # 如果年龄在18岁以下,打印“少年”
print('少年')
elif age < 30: # 如果年龄在18岁及以上,30岁以下,打印“青年”
print('青年')
elif age < 40: # 如果年龄在30岁及以上,40岁以下,打印“壮年”
print('壮年')
elif age < 50 # 如果年龄在40岁及以上,50岁一下,打印“中年”
print('中年')
else: # 如果不符合以上条件,则是50岁及以上的年龄,打印“老年”
print('老年')
if的嵌套
其实在if的子代码当中,我们还可以再添加数个if代码分支,这个我们称为if的嵌套。
语法结构:
if 条件1:
语句1
if 条件2:
语句2
...
...
举例:
# country表示国家,province表示省份
if country == "中国":# 如果国家是中国,则进入子代码
if province == "上海":# 如果省份是上海,则打印内容
print('他在中国,是上海人')
else:# 如果country不是中国,说明他是外国人
print('他是外国人')
if的练习题
题目
- 编写一个用户登录程序,如果用户名是'user',并且密码是'123 ',则打印登录成功,如果不是则打印用户名或密码错误。
- 编写一个成绩评判系统,90分以上打印优秀,70分以上打印良好,60分以上打印及格,60分以下打印不及格。
答案
-
username = input("请输入用户名:") # 获取用户名 password = input("请输入密码:") # 获取密码 if username == 'user' and password == '123': # 如果用户名为'user',并且密码为'123',则打印'登录成功' print("登录成功") else: # 否则打印'用户名或密码错误' print("用户名或密码错误") -
grades = int(input("请输入成绩:")) # 获取成绩,并将成绩从字符串类型转换成整型 if grades > 90: # 成绩大于90,打印优秀 print('优秀') elif grades > 70: # 成绩大于70,打印良好 print('良好') elif grades > 60: # 成绩大于60,打印及格 print('及格') else: # 成绩小于60,打印不及格 print('不及格')
循环结构之while循环
语法结构:
while 判断条件:
执行语句
...
这段代码表示:当判断条件为True时,执行子代码中的语句,子代码中的语句执行完后,再次判断条件是否为True,如果为True,则继续执行子代码;如果为False,则跳出while循环。
举例:
a = 0 # 给a赋值0
while a < 10: # 判断a是否小于10,小于10则进入循环,否则结束while循环
print(a) # 每经过一次循环,打印a的值
a += 1 # 每经过一次循环,a的值都会加1
循环结构之for循环
语法结构:
for 变量名 in 可迭代对象:
语句1
...
在for循环中,会遍历可迭代对象,按顺序把可迭代对象中的每一个值赋给变量名。
目前可迭代对象需要知道的有:字符串、列表、字典....
举例:
# 案例1,遍历字符串
for s in 'abcde': # 遍历'abcd',拆分成'a', 'b', 'c', 'd'赋值给变量s
print(s) # 打印s
'''
输出结果
a
b
c
d
'''
# 案例2,遍历列表
for l in [1, 2, 'a']: # 遍历[1, 2, 'a'],拆分成1, 2, 'a'赋值给变量l
print(l) # 打印l
'''
输出结果
1
2
a
'''
# 案例3,遍历字典
for k in {'name':'tom', 'age': 18, 'sex':'男'}: # 遍历字典时只会将字典中的key赋值给变量名,也就是'name', 'age', 'sex'赋值给变量k
print(k) # 打印k
'''
输出结果
name
age
sex
'''
# 案例4,range函数
for i in range(4): # range(4)可以把他看作是列表[0, 1, 2, 3],或者[0,4)的整数
print(i)
'''
输出结果
0
1
2
3
'''
break与continue
break的应用
break主要用于直接结束本层循环。
举例:
a = 1
while True: # 整个死循环
print(a) # 打印a的值
if a == 4: # 当a的值为4时,跳出while循环
break # 跳出本层循环
a += 1 # 每次循环a的值加1
'''
输出结果
1
2
3
4
'''
continue的应用
break主要用于结束当前这次的循环,直接进入下一次循环。
举例:
# 只输出偶数
a = 0
while a < 10: # 当a < 10时,进入循环
if a % 2 == 0: # 当a除2余数为0时,说明是偶数
a += 1 # a加1
continue # 跳过下面的语句,直接进入下一次循环
a += 1 # a加1
print(a) # 打印a
'''
输出结果
2
4
6
8
10
'''
作业
编写一个猜数字的游戏。
基本要求:
如果不对的情况下可以猜三次,如果对了直接结束。
拔高练习:
三次机会用完之后提示用户是否继续猜测,如果用户输入了y,则再给用户三次机会,如果用户输入n则直接结束。
答案
num = 65 # 自己定义一个数字
count = 3 # 机会次数为3
while count > 0: # 如果剩余机会大于0次,继续猜测
guess_num = int(input("请输入你要猜的数字:")) # 获取输入的数字并转换成整型
if guess_num < num: # 如果猜测的数字比定义的数字小
print("猜小了!")
count -= 1 # 剩余机会减1次
print("你还有%d次机会!" % count) # 输出剩余机会
elif guess_num == num: # 如果猜中了数字
print("恭喜你,猜中了")
break # 退出循环,结束游戏
else: # 不是猜小了,也没猜中,那就是猜大了
print("猜大了!")
count -= 1 # 剩余机会减1次
print("你还有%d次机会!" % count) # 输出剩余机会
if count == 0: # 判断剩余机会是否为0
print("你的机会已用尽,是否继续(输入y继续,输入n结束):")
while True: # 死循环
is_continue = input() # 获取用户输入的值
if is_continue == 'y': # 如果输入的是'y'
count = 3 # 剩余机会重新变为3
break # 结束本层的死循环
elif is_continue == 'n': # 如果输入的是'n'
print("欢迎再次游玩!")
break # 结束本层的死循环
else: # 如果用户没有输入'y'或者'n',则提示
print("请输入y或者n!")