一、流程控制简介

流程控制即控制事物的执行流程
任何使用执行流程只有三种情况:
1.顺序结构:
自上而下依次运行
image
2.分支结构
在运行过程中根据条件的不同可能会执行不同的流程
image
3.循环结构
在运行过程中有些代码需要反复执行
image
必知必会:

  1. 条件都会转成布尔值,从而决定子代码是否执行
  2. 在python中,使用缩进来表示代码的从属关系
  3. 并不是所有的代码都可以拥有子代码
  4. 同属于某个代码的多行子代码,必须保持相同的缩进量
    ps:上一行代码的结尾如果是冒号,那么下一行代码必缩进

二、分支结构

关键字if
1.单if分支结构
"""
if 条件:
	条件成立之后执行的子代码块
"""
# 如果年龄小于28,叫小姐姐
	age = 36
	if age < 28:
		print('小姐姐好')
2.if与else连用
"""
if 条件:
	条件成立之后执行的子代码块
else:
	条件不成立的情况下执行的子代码块

ps:if与else连用 两者的子代码永远只会执行一个
"""
# 如果年龄小于28 叫小姐姐 否则叫 不好意思认错人了
	age = 25
	if age < 28:
		print('小姐姐好')
	else:
		print('认错人了')
3.if elif else三者连用
"""
if 条件1:
	条件1成立之后执行的子代码块
elif 条件2:
	条件1不成立	条件2成立之后执行的子代码块
elif 条件3:
	条件1和2都不成立	条件3成立之后执行的子代码块
...
else:
	上述条件都不成立	执行的子代码块
	
ps:elif可以有多个
三者连用也是只会其中一个子代码块
"""
# 根据成绩评判分类
# 大于90优秀 大于80良好 大于70一般 大于60及格 其他挂科
	score = 79
	if score > 90:
		print('优秀')
	elif score > 80:
		print('良好')
	elif score > 70:
		print('一般')
	elif score 78> 60:
		print('及格')
	else:
		print('挂科重修')

if判断之嵌套

age = 26
height = 165
weight = 99
is_beautiful = True
is_success = True
if age < 28 and height > 160 and weight < 100 and is_beautiful:
	print('小姐姐能否加个微信')
	# 判断小姐姐是否会给微信
	if is_success:
		print('吃饭 看电影 天黑了...')
	else:
		print('去你妹的 变态!')
else:
	print('可惜了')

image

三、 while循环

# 语法结果
"""
while 条件:
	条件成立之后循环执行的子代码块
"""
while True:
	# 1.获取用户输入的用户名和密码
	username = input('username>>>:')
	password = input('password>>>:')
	# 2.判断用户名和密码是否正确
	if username == 'jason' and password == '123':
		print('来宾三位')
	else:
		print('去你妹的 没钱滚蛋')

image

while+break

while + break
break结束本层循环
while True:
	# 1.获取用户输入的用户名和密码
	username = input('username>>>:')
	password = input('password>>>:')
	# 2.判断用户名和密码是否正确
	if username == 'jason' and password == '123':
		print('来宾三位')
		# 直接结束本层循环
		break
	else:
		print('去你妹的 没钱滚蛋')

break本层的含义

# while嵌套
while True:
	# 1.获取用户输入的用户名和密码
	username = input('username>>>:')
	password = input('password>>>:')
	# 2.判断用户名和密码是否正确
	if username == 'jason' and password == '123':
		print('来宾三位')
		while True:
			cmd = input('请输入您的指令>>>:')
			# 判断用户是否想退出
			if cmd == 'q':
				break
			print('正在执行您的指令:%s' % cmd)
		break
	else:
		print('去你妹的 没钱滚蛋')

全局标志位

# 标志位的使用
flag = True
while flag:
	# 1.获取用户输入的用户名和密码
	username = input('username>>>:')
	password = input('password>>>:')
	# 2.判断用户名和密码是否正确
	if username == 'jason' and password == '123':
		print('来宾三位')
		while flag:
			cmd = input('请输入您的指令>>>:')
			# 判断用户是否想退出
			if cmd == 'q':
				flag = False
			print('正在执行您的指令:%s' % cmd)
	else:
		print('去你妹的 没钱滚蛋')

猜年龄的游戏

普通要求
	用户可以有三次猜错的机会 如果过程中猜对了直接退出
拔高要求
	三次机会用完之后提示用户是否继续尝试 如果是则再给三次机会 如果否则直接结束
real = 18
count = 0
while count < 7:
	age = input('age>>>:')
	age = int(age)
	if age == real:
		print('猜对了')
		break
	else:
		count += 1
		print('回答错误')
		if count == 3:
			answer = input('请问是否继续,yes or no>>>:')
			if answer == 'yes':
				count += 1
				print('恭喜再次获得3次机会')
			else:
				break

while+continue

# 1.使用while循环打印出0-10
# count = 0
# while count < 11:
#     print(count)
#     count += 1
# 2.使用while循环打印出0-10但是不打印4
# 1.定义一个起始变量
count = 0
# 2.循环
while count < 11:
	# 5.判断 如果count为4则不打印
	if count == 4:
		count += 1
		# 跳过本次循环 开始下一次循环
		continue
	# 3.打印变量的值
	print(count)
	# 4.变量值自增1
	count += 1

"""
continue会让循环体代码直接回到条件判断处重新判断
"""

死循环

while True:
	print(1)
"""死循环会让CPU极度繁忙 甚至奔溃"""

for循环

for循环能做到的事情 while循环都可以做到
但是for循环语法更加简洁 并且在循环取值问题上更加方便

name_list = ['jason', 'tony', 'kevin', 'jack', 'xxx']
# 循环取出列表的每一个元素并打印
# while实现
# count = 0
# while count < 5:
#     print(name_list[count])
#     count += 1
# for循环
for name in name_list:
	print(name)

"""
for 变量名 in 可迭代对象:  # 字符串、列表、字典、元组、集合
	for循环体代码

ps:变量名如果没有合适的名称 那么可以使用i,j,k,v,item等
"""

# name_list = ['jason', 'tony', 'kevin', 'jack', 'xxx']
# 循环取出列表的每一个元素并打印
# while实现
# count = 0
# while count < 5:
#     print(name_list[count])
#     count += 1
# for循环
# for name in name_list:
#     print(name)

# for循环字符串
# for i in 'hello world':
#     print(i)


# for循环字典:默认只能拿到k
d = {'username': 'jason', 'pwd': 123, 'hobby': 'read'}
for k in d:
	print(k, d[k])

range关键字

# 关键字range
# 第一种:一个参数  从0开始 顾头不顾尾
# for i in range(10):
#     print(i)
# 第二种:两个参数  自定义起始位置 顾头不顾尾
# for i in range(4, 10):
#     print(i)
# 第三种:三个参数  第三个数字用来控制等差值
for i in range(2, 100, 10):
	print(i)

"""
扩展知识
	https://movie.douban.com/top250  第一页
	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=0&filter=  推测第一页
"""
base_url = "https://movie.douban.com/top250?start=%s&filter="
for i in range(0, 250, 25):
	print(base_url % i)


# range在不同版本的解释器中 本质不同
	在python2.X中range会直接生成一个列表
		在python2.X中有一个xrange也是迭代器(老母猪)
	在python3.X中range是一个迭代器(老母猪)  节省内存空间
	'''python2.X中xrange就是python3.x里面的range'''

for+break

break功能也是用于结束本层循环
for i in range(10):
	if i == 4:
		break
	print(i)

for+continue

continue功能也是用于结束本次循环
for i in range(10):
	if i == 4:
		continue
	print(i)

for+else

else也是在for循环正常结束的情况下才会执行

for i in range(10):
	if i == 4:
		break
	print(i)
else:
	print('你追我!!!')

for循环的嵌套使用

# for i in range(3):
#     for j in range(5):
#         print("*", end='')
#     print()


for i in range(1, 10):
	for j in range(1, i + 1):
		print('%s*%s=%s' % (i, j, i * j), end=' ')
	print()
posted on 2021-11-04 16:53  幽星  阅读(162)  评论(0)    收藏  举报