文章目录
- 流程控制
- 分支结构
- if语句之嵌套
- if练习题1:
- if练习题2:
- 循环结构
- while循环
- while+break
- 标志位的使用
- while+continue
- while+else
- for循环
- range关键字
- 死循环
- for+break
- for+continue
- for+else
- for循环的嵌套
流程控制
1. 流程控制?
即控制代码执行的先后顺序。
2. 种类:
在python中,流程控制一共有3种:
- 顺序结构: 执行顺序从上到下依次执行(如果没有其他的特殊条件,默认为该结构)。
- 分支结构: 执行某段程序时候,有多种选择,需要判断条件是否成立,根据判断结果执行不同的流程。
- 循环结构: 重复执行某件事情或某段代码。
分支结构
1. 单分支结构
1.1 关键字: if
1.2 结构:
'''
if 条件:
条件成立需要执行的子代码块
'''
1.3 注意事项:
1) 条件成立,执行子代码块,子代码块需要缩进;
2) 一般冒号后面的都要缩进;
3) 同属于一个代码块的子代码块,缩进量必须一样,同一代码块执行从上而下依次执行;
4) 条件可以是任意表达式,但执行结果必须为布尔类型。
1.4 示例:
age_of_girl = 35
if age_of_girl < 24:
print('小姐姐')
2. 双分支结构:
2.1 关键字:
if else
2.2 结构:
'''
if 条件:
条件成立执行该子代码块
else:
条件不成立,执行此子代码块
'''
2.3 示例:
age_of_girl = 35
if age_of_girl < 24:
print('小姐姐')
else:
print('阿姨好')
2.4 注意:
"在双分支中if 条件子代码块和else 子代码块,两者只能执行一个"
练习题:
age = 22
height = 165
weight = 90
is_beautiful = True
if age < 24 and height > 160 and weight <100 and is_beautiful:
print('我们可以处对象嘛!')
else:
print('我们不合适!')
3. 多分支结构
3.1 结构:
'''
if 条件:
条件成立之后执行的代码
elif 条件1:
条件不成立,条件1成立之后,执行的代码
elif 条件2:
条件和条件1都不成立,条件2成立执行的代码
...
else:
以上条件都不成立,执行的代码块
'''
3.2 注意:
"else不是一定要写的"
3.3 示例:
score = 20
if score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 70:
print('C')
elif score >= 60:
print('D')
else:
print('E')
if语句之嵌套
age = 22
height = 165
weight = 90
is_beautiful = True
is_success = False
if age < 24 and height > 160 and weight < 100 and is_beautiful:
print('小姐姐加个微信?')
if is_success:
print('吃饭,看电影......')
else:
print('滚犊子')
else:
print('滚犊子')
if练习题1:
# 实现登录功能,用户名是:mark, 密码:123;登录成功之后,打印:登录成功,否则,登录失败
代码实现:
# 接收用户输入的用户名
username = input('请输入用户名:')
password = input('请输入密码:')
# 补充
password = int(password)
if username == 'mark' and password == 123:
print('登录成功')
else:
print('登录失败')
if练习题2:
# 如果用户输入用户姓名,就打印其职务,否则打印其他人员;例如输入mark,打印管理员。
代码实现:
# 先让用户输入用户名
username = input('请输入用户名:')
if username == 'mark':
print('管理员')
elif username == 'smith':
print('前端')
elif username == 'tom':
print('后端')
else:
print('其他人员')
循环结构
while循环
1. 结构:
'''
while 条件:
条件成立之后的代码块
'''
2. 示例:
while True:
username = input('请输入用户名:')
password = input('请输入密码:')
# 补充
if username == 'mark' and password == '123':
print('登录成功')
else:
print('登录失败')
while+break
# 基于上面示例,虽然登录成功,但还是显示输入用户名,理应是登录成功,就跳出循环,因此有了break
while True:
username = input('请输入用户名:')
password = input('请输入密码:')
# 补充
if username == 'mark' and password == '123':
print('登录成功')
# 结束本层循环
break
else:
print('登录失败')
print(123)
注意:break跳出的只是本层循环
# 验证break跳出的是本层循环
while True:
username = input('请输入用户名:')
password = input('请输入密码:')
# 补充
if username == 'mark' and password == '123':
print('登录成功')
while True:
cmd = input('请输入你的指令:')
print('正在执行你的指令:%s' % cmd)
if cmd == 'q':
break
break
else:
print('登录失败')
标志位的使用
# 标志位的使用:
flag = True
while flag:
username = input('请输入用户名:')
password = input('请输入密码:')
if username == 'mark' and password == '123':
print('登录成功')
while flag:
cmd = input('请输入你的指令:')
print('正在执行你的指令:%s' % cmd)
if cmd == 'q':
flag = False
else:
print('登录失败')
while+continue
1.问题前提:使用循环打印出0-9的数字
count = 0
while count < 10:
print(count)
count += 1
2. 如果修改问题为:使用循环打印出0-9的数字,但是不打印3,该如何进行?
解决:需要使用到continue关键字,结束本次循环
count = 0
while count < 10:
if count == 3:
count += 1
continue
print(count)
count += 1
注意:continue只是结束本次循环,碰到continue,会立马执行循环条件的判断。
while+else
# while+else示例1:
count = 0
while count < 5:
print(count)
count += 1
else: # 没有break打断时,会执行else代码块
print('我执行了')
# 示例2:
count = 0
while count < 5:
if count == 3:
break
print(count)
count += 1
else: # 如果遇到break打断循环,则不执行else代码块
print('我执行了')
# 一般情况,else跟if连用,但是不局限于if
总结:当没有人为终断循环体时候,会执行else,否则,不走else
for循环
# for循环能实现的功能,while循环都可以实现,但是for的语法更简洁,取值更方便
问题:逐个打印hobby_list中的元素?
hobby_list = ['basketball','tea','game','short_video']
# 使用while循环实现,打印出每一个元素
hobby_list = ['basketball','tea','game','short_video']
count = 0
while count < 4:
print(hobby_list[count])
count += 1
# for循环实现
hobby_list = ['basketball','tea','game','short_video']
for i in hobby_list:
print(i)
语法结构:
'''
for i in 可迭代对象: # 可迭代对象指字符串,列表,元祖,字典,集合...
print(i)
'''
注意:
1. for循环的循环对象不能为数字:
for i in 1.123:
print(i) # 报错 TypeError: 'float' object is not iterable
2. 当循环对象为字典时,循环字段暴露的是key
d = {'username': 'mark', 'password': 123}
for i in d:
# print(i)
print(i, d[i]) # d['username']
'''
for i in d: 里面的i值可以是任意的变量,如果没有好的变量名,一般叫i, j, k, v, item等
'''
range关键字
1. 第一种玩法:# 只写一个参数的情况,代表从0开始的有序数字,顾头不顾尾
for i in range(10):
print(i)
# 执行结果:0 1 2 3 4 5 6 7 8 9
2. 第二种玩法: # 写两个参数,可以自定义起始位置,顾头不顾尾
for i in range(3,10):
print(i)
# 执行结果:3 4 5 6 7 8 9
3. 第三种玩法:# 写三个参数,第三个参数代表步长,顾头不顾尾
for i in range(0,100,10):
print(i)
# 执行结果:0 10 20 30 40 50 60 70 80 90
# 扩展知识:
https://movie.douban.com/top250?start=0&filter=
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=
https://movie.douban.com/top250?start=75&filter=
https://movie.douban.com/top250?start=100&filter=
代码实现:
base_url = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 250, 25):
print(base_url % i)
死循环
while True:
print(1)
# 死循环的情况是不能出现的
# 实际项目中,推荐使用for循环,一般不会造成死循环
for+break
for i in range(10):
if i == 3:
break
print(i)
# 执行结果:0 1 2
for+continue
for i in range(10):
if i == 3:
continue
print(i)
# 执行结果:0 1 2 4 5 6 7 8 9
for+else
for i in range(10):
if i == 3:
break
print(i)
else:
print('我执行了')
for循环的嵌套
for i in range(2):
for j in range(2):
print(i, j)
# 执行结果:
0 0
0 1
1 0
1 1
2 0
2 1
3 0
3 1