一、流程控制语句介绍
二、顺序控制语句
三、分支控制语句
四、分支嵌套结构
五、三元表达式
六、循环控制结构
七、while循环
八、for循环
九、range()函数
十、综合案例
流程:计算机执行代码的顺序,就是流程
流程控制:对计算机代码执行顺序得控制,就是流程控制
流程分类:流程控制一共分为三类,分别是顺序结构、分支(选着)结构、循环结构
为什么要用控制语句?
类别人在十字路口进行抉择一样,使python程序也能进行选择
#1、顺序流程控制
print("hello world")
print("你好")
结构 | 格式 | 执行流程 |
---|---|---|
单分支 | if 条件表达式: | 如果表达式成 True,则执行if块(if 体)中的代码,否则不执行 |
双分支 | if 条件表达式: 代码块1 else: 代码块2 |
如果条件表达式成立True,则执行if块(if体)当中的代码1,否则执行else块(else体)中的代码2 |
多分支结构 | if 条件表达式1 : 代码1 elif 条件表达式2: 代码2 elif 条件表达式3: 代码3 else: 代码4 |
如果条件表达式1成立则执行if快中代码1,不成立则往后面推移 |
案例操作一 菜单跳转:
"""
选择结构案例
项目中的菜单上下级跳转
上午:上级菜单进入下级菜单
"""
# 打印界面
print(" 购物商城 ")
print("~ * ~ * ~ * ~ * ~ * ~")
print(" 1、会员登录")
print(" 2、用户注册")
print(" 3、退出系统")
print("~ * ~ * ~ * ~ * ~ * ~")
# 提示用户输入选项 choice~选择
choice = input("请输入您的选项(1/2/3):")
# 判断用户输入的选项:用户输入的是字符串~我直接跟字符串判断
if choice == "1":
# 会员登录
account = input("请输入账号:")
passwd = input("请输入密码:")
input("系统正在升级中,请稍后再试~按任意键退出程序")
elif choice == "2":
# 用户注册- username 用户名~ password 密码 ~ confirm 确认
username = input("请输入账号:")
password = input("请输入密码:")
confirm = input("请确认密码:")
input("系统正在升级中,请稍后再试~按任意键退出程序")
elif choice == "3":
# 退出程序?怎么退出?
print("谢谢惠顾,客观下次光临噢")
exit(1)
else:
input("没有这个选项,是不是按错了?按任意键退出系统")
print("程序继续执行中...")
案例操作二 猜大小 :
"""
选择结构
案例操作:猜大小
"""
# 告诉python解释器我们要使用random随机数
import random
# 打印游戏界面
print(" 休闲小游戏:猜大小")
print("#######################")
print(" 系统正在生成1~10数据中..")
print(" 大于等于5: 大")
print(" 小于5: 小")
print(" 请根据自己的判断输入")
print(" :大 or 小")
print(" 最后系统会给出结果")
print(" 用户会得到奖励或者惩罚")
print("#######################")
# 随机生成一个数据
r = random.randint(1, 10)
# 用户输入并判断结果
result = input("1~10的数字已经产生,请给出结果(大|小):")
if result == "大" and r >= 5:
print("恭喜玩家,获得胜利..奖励2积分..")
elif result == "小" and r < 5:
print("恭喜玩家,获得胜利,奖励2积分")
else:
print("你失败了,扣除1积分")
# 立立: 非常优秀!
# 需要注意:出现多个运算符号时~一定要通过小括号提升运算符优先级!
if (result == "大" and r >= 5) or (result == "小" and r < 5):
print("恭喜玩家,获得胜利,奖励2积分")
else:
print("你失败了,扣除1积分")
案例操作三 石头剪刀布:
"""
需求分析:
目的:石头剪刀布 游戏开发
过程:
玩家 PK 电脑
数据输入 随机产生
input random(数字)
石头剪刀布:石头0|剪刀1|布2 字符
玩家输入:石头|剪刀|布 0|1|2
结果:
使用数字 分别表示 石头|剪刀|布
电脑的数据:随机产生
玩家的数据:输入产生
最两个数据进行比较得到结果
"""
import random
# 打印游戏界面
print(" 休闲小游戏")
print("~~~~~~~~~~~~~~~~~~~~~~~~~~")
print(" 石头剪刀布游戏")
print(" 游戏中,电脑会自动出招")
print(" 玩家根据自己的想法按照提示")
print(" 输入自己的招数")
print(" 最终:系统会根据电脑的数据")
print(" 和玩家的输入数据,进行比较")
print(" 最终得到游戏结果")
print("~~~~~~~~~~~~~~~~~~~~~~~~~~")
# 电脑出招 computer-电脑
print("系统正在数据运算中....")
print("系统开始出招")
# 整数
computer = random.randint(0, 2) # 0|1|2
print("系统出招完成!")
# 提示玩家出招 user-用户 字符串
user = input("玩家;请输入您的招数(0-石头|1-剪刀|2-布):")
# 判断输赢
# 如果使用逻辑判断时~一定要使用and而不是&(逻辑与-二进制-位)
# 如果使用逻辑判断时~一定要使用or而不是|(逻辑或-二进制-位)
print("系统正在运算数据中...")
if (computer==0 and user=="2") or (computer==1 and user=="0") or (computer==2 and user=="1"):
print("恭喜,玩家获胜,奖励2积分")
elif computer == int(user):
print("注意注意:平局平局")
else:
print("SORRY,玩家失败,扣除1积分")
input("游戏结束,按任意键退出")
名称 | 格式 | 执行流程 |
---|---|---|
多分支嵌套结构 | if 条件表达式 1 : 代码1 if 条件表达式 2 代码2 else: 代码4 else:代码3 |
如果条件表达式1成立,则执行代码1,如果条件表达式2成立,则执行代码3,否则执行代码4 |
返回文章顶部
格式 | 说明 |
---|---|
变量 = 条件为真返回的结果 if 条件判断 else 条件为假返回的结果 | 变量赋值时,要做条件判断时,简化代码使用 |
a = 5
print("真") if a >4 else print("假") #结果为 真
格式 | 执行流程 |
---|---|
初始条件设置:通常是一个计数器,来控制条件表达式是否成立 while 条件表达式: 代码1 代码2 改变计数器的值 |
如果条件表达式成立True,执行循环体中的代码块,执行完循环体中的代码后,继续判断条件表达式是否成立,如果成立继续执行循环体,直到条件表达式为Fasle后程序继续往下执行 |
循环就是:重复的意思,循环结构就是按照某个条件判断是否重复执行的结构
基本案例:
a = 1
while a <= 3 :
print("循环的数字",a)
a += 1
#得到结果
#循环的数字 1
#循环的数字 2
#循环的数字 3
(一)循环控制关键字
1.break 关键字
break : 让不断执行的循环中断,直接跳出循环
基本案例:当循环到数字5时候停止循环
a = 1
while a <= 10 :
print("循环的数字",a)
if a == 5 :
print("终于到我了 我是数字5 到我这里结束")
break
a += 1
#得到结果
# 循环的数字 1
# 循环的数字 2
# 循环的数字 3
# 循环的数字 4
# 循环的数字 5
# 终于到我了 我是数字5 到我这里结束
注意 brak 关键字用于跳出当前循环!执行循环后面的代码 brak 关键字只能使用在循环中
2.continue关键字
continue : 循环过程会有很多次,这个关键字结束本次循环,直接开始下一次循环
"""
循环结构
火车站售票
10张票
预留6|8号票
笔试:要求~可以使用if判断
不能使用else
"""
import time
# 票的号码
ticket = 0
while ticket < 10: # ticket <= 9
ticket += 1
time.sleep(1)
print("准备售出", ticket, "号票")
# 预留6|8号票
if ticket == 6 or ticket == 8:
print("这是预留票,不能出售")
continue
print("成功售出", ticket, "号票")
print("下班")
3. else关键字
当while循环完毕后,才执行else后面的代码块
"""
循环中的else关键字
只要循环中没有执行break语句
最终都会执行<一次>else的代码
哪怕循环的条件是假的!
"""
import time
# 票的号码
ticket = 1
while ticket <= 10:
time.sleep(0.5)
print("准备售出", ticket, "号票")
print("成功售出", ticket, "号票")
ticket += 1
# 给while循环添加的else关键字
# 循环中只要不执行break
# 这里的代码就会执行1次[不论while的条件是否为True]
else:
print("所有的票都卖完啦~ 正常下班~")
(二)嵌套循环
嵌套循环,就是循环结构里面使用了else,break,continue,if循环,包括后面才提到for循环等等一系列嵌套进去
这里通过改造前面的案例 剪刀石头布,猜数字游戏,来进行体现
改造剪刀石头布案例:
"""
需求分析:
目的:石头剪刀布 游戏开发
通过循环改造
每次游戏结束~提示用户是否继续游戏?
有一种可能:用户永远都不退出?!有
循环~死循环!
"""
import random
# 第几局游戏
index = 1
# 打印游戏界面
print(" 休闲小游戏")
print("~~~~~~~~~~~~~~~~~~~~~~~~~~")
print(" 石头剪刀布游戏")
print(" 游戏中,电脑会自动出招")
print(" 玩家根据自己的想法按照提示")
print(" 输入自己的招数")
print(" 最终:系统会根据电脑的数据")
print(" 和玩家的输入数据,进行比较")
print(" 最终得到游戏结果")
print("~~~~~~~~~~~~~~~~~~~~~~~~~~")
while True:
# 电脑出招 computer-电脑
print("第", index, "次游戏正式开始..")
print("系统正在数据运算中....")
print("系统开始出招")
# 整数
computer = random.randint(0, 2) # 0|1|2
print("系统出招完成!")
# 提示玩家出招 user-用户 字符串
user = input("玩家;请输入您的招数(0-石头|1-剪刀|2-布):")
# 判断输赢
print("系统正在运算数据中...")
if (computer==0 and user=="2") or (computer==1 and user=="0") or (computer==2 and user=="1"):
print("恭喜,玩家获胜,奖励2积分")
elif computer == int(user):
print("注意注意:平局平局")
else:
print("SORRY,玩家失败,扣除1积分")
# 循环改造代码:
is_goon = input("尊敬的用户您好,是否继续游戏(Y/N)?")
index += 1
if is_goon == "Y":
print("准备开始下一局游戏")
continue
elif is_goon == "N": #
print("游戏结束")
break
input("游戏结束,按任意键退出")
改造猜数字游戏:
"""
循环案例
猜数字
import的内容~规范要求在文件开头的位置写
但是~ 某些偶尔只用到一次的情况,可以在使用的地方编写
"""
import time
import random
# 打印界面
print("########################")
print(" 猜数字游戏")
print(" 系统会自动产生1~100的数字")
print(" 用户输入猜测的数字")
print(" 系统会提示用户偏大|偏小")
print(" 直到猜中")
print("########################")
input("按任意键开始游戏")
# 系统产生数字
print("系统正在高速运算中.....")
time.sleep(2)
r = random.randint(1, 100)
print("系统数字已经产生,请按照提示开始操作")
while True:
# 请用户输入数字
u = input("请输入您猜测的数字:")
u = int(u)
# 判断和提示
if u > r:
print("猜测的数字偏大了..\n")
elif u < r:
print("猜测的数字偏小了..\n")
else:
print("恭喜你,猜中了,就是", r)
break
for 循环也是 python 中的一种循环结构,和 while 循环有着不一样的使用方式
备注1: 有其他语言基础的话,会知道其它编程语言中会有很多种循环,不同的循环可以相互替换[while / do-while / for ],并且互相替换之后对于程序的编写难度/可读性没有提升下降! |
备注2: python语言在诞生之初,定义的方向就是间接(简单易学),明了(可读性),没有多余(可用性)! 传统语法中的多种选着结构if/switch,在python中就被简化成了一种if 传统语法中的多种循环结构,在Python中根据不同的使用场景,简化while/for |
while 语法与 for 语法 对比: while基本语法:用来重复执行代码逻辑 for基本语法:主要针对多个数据进行遍历查看 |
临时变量就是,像一次性纸杯这里的X变量就是
执行过程如下图所示:”hello”中的数据按照顺序依次交给 x 在循环中使用,直到所有数 据全部遍历完,循环退出。
for 循环也是一种循环,所以 for 循环中可以写 break/continue/else
range(起始位,结束前一位,步数)
- range(5) 输出0到5
- range(1,5) 输出1到4
- range(1,5,2) 输出 1 和3
编写一个游戏登录的功能:运用到本章所提到的语法
"""
案例操作:多用户登录
单个用户?账号+密码+昵称
用户 = [账号, 密码, 昵称]
user1 = ["admin", "123", "管理员"]
user2 = ["wenwenc9", "111", "稳稳c9"]
多个用户?
users = [user1, user2]
等价于
users = [ ["admin", "123", "管理员"], ["wenwenc9", "111", "稳稳c9"]]
用户登录:
用户输入:账号 + 密码
此时,~不能使用成员运算符了!【问题的重点】
["admin", "123"] in users False[缺少昵称]
这时候,我们就必须得遍历整个列表users~判断账号+密码是否正确
"""
import os
# 系统中的所有用户
users = [
["admin", "123", "管理员"],
["wenwenc9", "111", "wenwne"]
]
# 定义变量~判断用户登录成功(True)或者失败(False)
# 程序刚开始运行的时候,没有用户登录,所以默认False
ok = False
# 登录后的昵称: 没有用户登录的时候~ 没有昵称
n = ""
while True:
# 多用户登录
username = input("请输入账号:")
password = input("请输入密码:")
# 判断登录是否成功:遍历所有用户
for u in users:
# 第一次循环:u -> ["admin", "123", "大牧"]
if username == u[0] and password == u[1]:
input("登录成功,按任意键继续")
ok = True # 登录成功
n = u[2] # 记录昵称
break
# [所有数据全部遍历完了]~没有发现正确的账号+密码,登录失败
else:
input("账号或者密码有误,请重新登录")
ok = False
# ok的目的:根据用户登录是否成功,判断要不要展示首页
if ok == True:
# 用户登录了,展示首页
print(" 欢迎进入游戏首页界面")
print("尊敬的用户", n, ",欢迎进入xx游戏")
input(" 首页功能正在升级中,按任意键继续")