分支结构

什么是分支结构

分支结构就是根据条件判断的真假去执行不同分支对应的子代码

为什么要用分支结构

人类某些时候需要根据条件来决定做什么事情,比如:如果今天下雨,就带伞

所以程序中必须有相应的机制来控制计算机具备人的这种判断能力

如何使用分支结构

if语法

Python之流程控制_while循环

用if关键字来实现分支结构,完整语法如下

if 条件1:   # 如果条件1的结果为True,就依次执行:代码1、代码2,......
 代码1
代码2
......
elif 条件2: # 如果条件2的结果为True,就依次执行:代码3、代码4,......
 代码3
代码4
......
elif 条件3: # 如果条件3的结果为True,就依次执行:代码5、代码6,......
 代码5
代码6
......
else:   # 其它情况,就依次执行:代码7、代码8,......
代码7
代码8
......
# 注意:
# 1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行
# 2、条件可以是任意表达式,但执行结果必须为布尔类型
# 在if判断中所有的数据类型也都会自动转换成布尔类型
# 2.1、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
# 2.2、其余均为True

if应用案例

Python之流程控制_while循环_02

案例1:

如果:女人的年龄>30岁,那么:叫阿姨

girl=31
if girl > 30:
print('阿姨好')

案例2:

如果:女人的年龄>30岁,那么:叫阿姨,否则:叫小姐

girl=18
if girl > 30:
print('阿姨好')
else:
print('小姐好')

案例3:

如果:女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨**

girl=18
height=171
weight=99
is_pretty=True
if girl >= 18 and girl < 22 and height > 170 and weight < 100 and is_pretty == True:
print('表白...')
else:
print('阿姨好')

案例4:

如果:成绩>=90,那么:优秀

如果成绩>=80且<90,那么:良好

如果成绩>=70且<80,那么:普通

其他情况:很差

score=input('>>: ')
score=int(score)

if score >= 90:
print('优秀')
elif score >= 80:
print('良好')
elif score >= 70:
print('普通')
else:
print('很差')

案例5:if嵌套

#在表白的基础上继续:
#如果表白成功,那么:在一起
#否则:打印。。。

girl=18
height=171
weight=99
is_pretty=True
success=False

if agirl >= 18 and girl < 22 and height > 170 and weight < 100 and is_pretty == True:
if success:
print('表白成功,在一起')
else:
print('(⊙﹏⊙)')
else:
print('阿姨好')

练习1: 登陆功能

name=input('请输入用户名字:').strip()
password=input('请输入密码:').strip()
if name == 'lele' and password == '123':
print('lele login success')
else:
print('用户名或密码错误')

练习2:

#!/usr/bin/env python
#根据用户输入内容打印其权限

'''
lele --> 超级管理员
le --> 普通管理员
bb,cc --> 业务主管
其他 --> 普通用户
'''
name=input('请输入用户名字:')

if name == 'lele':
print('超级管理员')
elif name == 'le':
print('普通管理员')
elif name == 'bb' or name == 'cc':
print('业务主管')
else:
print('普通用户')

循环结构

循环结构就是重复执行某段代码块

为什么要用循环结构

Python之流程控制_用户名_03

人类某些时候需要重复做某件事情

所以程序中必须有相应的机制来控制计算机具备人的这种循环做事的能力

如何使用循环结构
while循环语法

Python之流程控制_for循环_04

python中有while与for两种循环机制,其中while循环称之为条件循环,语法如下

while 条件:
代码1
代码2
代码3
while的运行步骤:
步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、......
步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3、......,如果条件为False,则循环终止

据说某公司的程序员用死循环把机房给点着了

while循环应用案例

案例一:while循环的基本使用

用户认证程序

#用户认证程序的基本逻辑就是接收用户输入的用户名密码然后与程序中存放的用户名密码进行判断,判断成功则登陆成功,判断失败则输出账号或密码错误
username = "lele"
password = "123"

yh_name = input("请输入用户名>>>:").strip()
yh_pwd = input("请输入密码>>>:").strip()
if yh_name == username and yh_pwd == password:
print("登陆成功")
else:
print("输入的用户名或密码错误!")

#通常认证失败的情况下,会要求用户重新输入用户名和密码进行验证,如果我们想给用户三次试错机会,本质就是将上述代码重复运行三遍,你总不会想着把代码复制3次吧。。。。
username = "lele"
password = "123"
# 记录错误验证的次数
count = 0
while count < 3:
yh_name = input("请输入用户名>>>:")
yh_pwd = input("请输入密码>>>:")
if yh_name == username and yh_pwd == password:
print("登陆成功")
else:
print("输入的用户名或密码错误!")
count += 1

案例二:while+break的使用

使用了while循环后,代码确实精简多了,但问题是用户输入正确的用户名密码以后无法结束循环,那如何结束掉一个循环呢?这就需要用到break了

username = "lele"
password = "123"
#记录错误验证的次数
count = 0
while count < 3:
name = input("请输入用户名:>>>").strip()
pwd = input("请输入密码:>>>").strip()
if name == username and pwd == password:
print("登录成功")
break # 用于结束本层循环
else:
print("输入的用户或密码错误!!!")
count += 1

运行结果:

Python之流程控制_while循环_05

案例三:while循环嵌套+break

如果while循环嵌套了很多层,要想退出每一层循环则需要在每一层循环都有一个break

username = "lele"
password = "123"
#记录错误验证的次数
count = 0
while count < 3:
name = input("请输入用户名:>>>").strip()
pwd = input("请输入密码:>>>").strip()
if name == username and pwd == password:
print("登录成功")
while True: # 第二层循环
cmd = input('请输入您的指令>>>:').strip()
if cmd == 'q':
flag = False
print(f'正在执行您的命令:{cmd}')
break # 用于结束本层循环
else:
print("输入的用户或密码错误!!!")
count += 1

运行结果:

Python之流程控制_for循环_06

案例四:while循环嵌套+tag的使用

针对嵌套多层的while循环,如果我们的目的很明确就是要在某一层直接退出所有层的循环,其实有一个窍门,就让所有while循环的条件都用同一个变量,该变量的初始值为True,一旦在某一层将该变量的值改成False,则所有层的循环都结束(全局标志位)

lele = True
while flag:
username = input('username>>>:')
while flag:
password = input('password>>>:')
while flag:
res = input('res>>>:')
if res == 'q':
lele= False

案例五:while+continue配合使用

continue用于结束本次循环 直接开始下一次循环(直接跳到条件判断处 重新判断) 一个continue也是只能影响所在的那一层while

count = 0
while count < 11: # 被动退出:不需要关键字 是条件不符合了!!!
if count == 7:
count += 1
continue # 结束本次循环 直接开始下一次循环(直接再次跳到条件判断处)
print(count)
count += 1

案例六:while+else配合使用

else当while没有被break主动结束的情况下 当while循环体代码运行结束之后就会走else的子代码

count = 0
while count < 11: # 被动退出:不需要关键字 是条件不符合了!!!
if count == 7:
count += 1
# continue
break # 主动结束循环
print(count)
count += 1
else:
print("while没有被break主动结束的情况下 执行完循环体就会执行该子代码")

弱智小游戏:

age=18
count = 0
while count<3:
count+=1
guess = int(input(">>>:"))
if guess > age:
print("猜的太大了,往小里试试...")
elif guess < age:
print("猜的太小了,往大里试试...")
else:
print("恭喜你,猜对了...")

for循环语法

Python之流程控制_for循环_07

for循环能够做到的事情while循环其实都可以做到但是for循环的语法结构更加简单 并且针对循环取值问题更加高效!!!

语法结构:

for 变量名 in 可迭代对象:  # 字符串 列表 字典 元组 集合

for循环应用案例

案例一:打印数字0-5(智障版)

# 简单版:for循环的实现方式
for count in range(6): # range(6)会产生从0-5这6个数
print(count)

# 复杂版:while循环的实现方式
count = 0
while count < 6:
print(count)
count += 1

案例二:遍历字典

for k in {'name':'lele','age':18,'gender':'male'}:  # for 循环默认取的是字典的key赋值给变量名k
print(k)

案例三:for循环嵌套

#用for循环嵌套的方式打印三行*号每行5个:
for i in range(3):
for j in range(5):
print("*",end='')
print() # print()表示换行

注意:break 与 continue也可以用于for循环,使用语法同while循环