python之流程控制上-if、while
流程控制
编写程序,是将自己的逻辑思想记录下来,使得计算机能够执行的过程。
而流程控制,则是逻辑结构中十分重要的一环。
在程序中,基础的流程结构分为顺序结构、分支结构、顺序结构
顺序结构自不必多说,上一句代码执行后,紧接着执行下一句代码,这样的程序就是顺序结构。
本文将以python中的语法为例,解释分支结构和顺序结构。
分支结构
当我们出门时,会查看天气,如果下雨了,就会拿一把雨伞,如果没有下雨就不拿伞,那么一个条件的成立与否会决定后续执行不同的操作,这种情况就是分支结构。
if关键字
刚才的那个例子,放到程序里,则会按如下伪代码实现:
出门前看天气
if 下雨了:
拿一把伞
出门
这两行代码的意思指,如果下雨了,就拿伞。
if关键字的用法:
- if后跟条件,再跟一个冒号
- 如果if后的条件成立了,那么执行缩进的代码
- 缩进的代码的缩进位数必须相同
我们再将刚才的伪代码换为真代码演示一遍:
print('我要出门了,查看一下天气') # 顺序结构
is_rain = True # 也可以换为False试一下
if is_rain: # 条件判断
print('会下雨,拿把伞') # 缩进的代码
is_umbrella = True # 记录拿伞的状态
print('好,出门') # 下雨
扩展:子代码块
刚才,在if关键字的用法中,我们提到了缩进的代码这个词,它被称作子代码块。
在python中,子代码块用缩进的方式来表示,
- 相同缩进的代码块代表同级代码块
- 顶格的代码都是顶级代码
- python缩进的规范是4个空格(pycharm中可以用tab键)
- 不是所有的代码都能拥有子代码块,if关键字是可以拥有子代码块的关键字之一
所以,在之前雨伞的例子里,无论下不下雨,当if关键字执行完毕后,顶级代码‘出门’都会顺序执行。
else关键字
刚才例子中,我们只考虑了条件成立的情况,条件不成立时则不做任何操作,那我们如何让条件不成立时,也可以有所操作呢,就要用到else关键字。
print('我想出门散散步')
if is_rain:
print('看来老天不赏脸')
else:
print('天气不错,走起')
# 上述程序中,如果下雨了就打印不出门,如果不下雨则打印出门。
else关键字的意思是:其余情况,则运行else下方的子代码块。
elif关键字
那有时,条件的情况并没有那么简单,比如,我们要根据分数情况给予学生一个评级,则是与不是这两种状态显然就不够用了,if和else的两种分支也是不够用的。
例子:分数评级小程序
score = input('分数:')
score = int(score) # 将输入的字符串转化为整型的语法
if score >= 90:
print('无敌')
elif score >= 80:
print('牛牛')
elif score >= 70:
print('可以')
elif score >= 60:
print('就这')
else:
print('滚蛋')
在这个程序中,会依次的判断if后的条件和elif后的条件是否成立,当某个条件成立后,则执行对应的子代码块,子代码块执行结束后分支结束。
实践练习
# 1.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
# 参考
username = input('请输入用户名:')
if username == "leethon":
print('超级管理员')
elif username == 'tom':
print('普通管理员')
elif username in ['jack', 'rain']:
print('业务主管')
else:
print('普通用户')
分支嵌套
分支的下面依然可能有分支,实现方式是if的子代码块中加入if关键字,这样就形成了一个循环嵌套
例子:2.编写用户登录程序,
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的已注册的用户则允许登录(判断用户名和密码)
eg: user_dict = {'oscar': 123, 'lily': 123}
# 参考
username = input('请输入用户名:')
pwd = input('请输入密码')
black_user_list = ['jason', 'kevin', 'tony']
user_dict = {'oscar': '123', 'lily': '123'}
if username in black_user_list:
print('你已经是黑名单了')
elif username in user_dict: # 如果是已注册用户则验证密码
if user_dict[username] == pwd: # 密码对错的分支
print('登录成功')
else:
print('密码错误')
else: # 如果输入的用户名不在两个名单中
print('用户名不存在')
循环结构
循环结构用于重复执行相同的代码,在循环结构的子代码结束后,会重新回到循环开头,判断是否进入下一个循环。
while关键字
count = 0
while count < 10:
print(count, end='')
count += 1
# 0123456789
while关键字也是可以跟子代码块的关键字,其执行的逻辑是:
- 当条件(
count < 10
)满足时,执行子代码块 - 子代码块执行完毕后,回到while后的条件判断是否进入下一个循环
while 条件:
子代码块
break关键字
当循环执行时,如果碰到了break,就终止循环,执行后续程序。
例子:
# 当遇到4就终止循环
count = 0
while count < 10:
if count == 4:
break
print(count, end='')
count += 1
# 0123
break意思是打断现在的循环,直接运行while后续同级代码。
上述代码中,当遇到4时,就进入了含break的分支,则终止循环,而count不为4时,就不会遇到break,循环就会继续。
continue关键字
当循环执行时,如果碰到了continue,就跳出此次循环,不执行后续的子代码,进入下一个循环。
例子:
# 当遇到4就跳过打印
count = 0
while count < 10:
if count ==4:
count += 1 # 因为后续的count+1不会执行,所以这里要在加上
continue
print(count, end='')
count += 1
# 012356789
上述代码中也用到了循环嵌套分支的结构,来控制循环的代码。
实例练习
用户登录程序
# 编写用户登录程序
# 用户如果登录失败 则只能尝试三次
# 用户如果登录成功 则直接结束程序
# 参考
user_dict = {'oscar': '123', 'lily': '123', 'kevin': '123'}
count = 0
while count < 3:
username = input('请输入用户名:')
pwd = input('请输入密码:')
if username in user_dict:
if user_dict[username] == pwd:
print('登录成功')
break
else:
print('密码错误')
count += 1
else:
print('用户名错误')
count += 1
猜年龄游戏
# 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
# 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
# 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试
# 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序\\
count = 0
while True:
inp_age = int(input('请猜年龄:'))
if inp_age == 18:
print('恭喜猜对了')
break
elif inp_age < 18:
print('猜小了')
else:
print('猜大了')
count += 1
if count == 3:
is_play = input('是否还要继续玩(y/n):')
if is_play == 'y':
count = 0
else:
break
python之流程控制上-if、while的更多相关文章
- Python之流程控制——if...else...
Python之流程控制--if...else... 一.流程控制 假如把程序比做走路,那我们到现在为止,一直走的都是直路,还没遇到过分岔口.当遇到分岔口时,你得判断哪条岔路是你要走的路,如果我们想让程 ...
- python之流程控制升级
python之流程控制:if elif else while for 一.流程控制之if: 1.1为什要有if判断:让计算机能像人一样代替人类工作,那么计算机应该有对于事务的读错,真假,是否可行的 ...
- Python之流程控制——while循环
Python之流程控制--while循环 一.语法 while 条件: 执行代码 while就是当的意思,它指当其后面的条件成立,就执行while下面的代码. 例:写一个从0打印到10的程序 coun ...
- python之流程控制与运算符
第一:流程控制 一:if条件语句 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 单分支语句: 单分支,单个条件 age = 20 if age >= 18: print('you ...
- python基础-->流程控制-->分支结构-->单项分支-->双向分支
# ###流程控制 ''' 流程:代码执行过程 流程控制:对代码执行过程的管控 顺序结构:代码默认从上到下依次执行 分支结构:对代码执行过程的管控 循环机构: while for ..in.... 分 ...
- Python【流程控制与循环】
本文介绍 1.流程控制 2.while循环 一.流程控制 单分支 if 条件: ...Python代码,满足条件执行 双分支 if 条件: ...Python代码,满足条件执行 else: ...Py ...
- Python基础—流程控制
一.Python流程控制 计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和循 ...
- python基础-流程控制(if,while,for)
今日内容总结 --流程控制(if,while,for) if:用来判断事物的对错.真假.是否执行.根据不同的情况判断,条件满足执行某条件下的语句 语法结构(3种) # 第一种,只有if结构.条件表达式 ...
- python之流程控制
流程控制之if-else if 条件1: 满足条件1的情况 else if 条件2: 满足条件2的情况 if 条件2.1: 满足条件2.1的情况(if-else语句的嵌套) else if 条件2.2 ...
随机推荐
- AtCoder Beginner Contest 249 F - Ignore Operations // 贪心 + 大根堆
传送门:F - Keep Connect (atcoder.jp) 题意: 给定长度为N的操作(ti,yi). 给定初值为0的x,对其进行操作:当t为1时,将x替换为y:当t为2时,将x加上y. 最多 ...
- ExpressionChangedAfterItHasBeenCheckedError详细解释
一个angular组件,他的生命周期是这样的 update bound properties for all child components/directives call ngOnInit, On ...
- 使用.NET简单实现一个Redis的高性能克隆版(六)
译者注 该原文是Ayende Rahien大佬业余自己在使用C# 和 .NET构建一个简单.高性能兼容Redis协议的数据库的经历. 首先这个"Redis"是非常简单的实现,但是他 ...
- Springboot Jpa: [mysql] java.sql.SQLException: Duplicate entry 'XXX' for key 'PRIMARY'
前言 1.问题背景 偶尔会出现登录请求出错的情况,一旦失败就会短时间内再也登录不上,更换浏览器或者刷新可能会暂时解决这个问题. 项目运行日志如下: 2022-07-21 09:43:40.946 DE ...
- Python 工匠: 异常处理的三个好习惯
前言 这是 "Python 工匠"系列的第 6 篇文章.(点击原文链接,可查看系列其他文章) 如果你用 Python 编程,那么你就无法避开异常,因为异常在这门语言里无处不在.打个 ...
- 基于EasyExcel实现的分页数据下载封装
功能概述 主要实现的功能: 1.分页查询,避免一次性查询全部数据加载到内存引起频繁FULL GC甚至OOM 2.当数据量超过单个工作簿最大行数(1048575)时,自动将数据写入新的工作簿 3.支持百 ...
- 杀死 Windows 某个端口
进入终端命令行,输入netstat -aon|findstr 3000查找端口号所对应的 PID: 输入指令taskkill /pid 20348 /f:
- NOI2022游记,Au
前言 8.19: 说实话,我在这里说几句话还不如水群, 新番把我心态搞炸了,我现在急需快乐 所以像游记这种吹水+回忆的文章让我现在非常痛苦. Day -1 (8.19) 上午是信心赛,太好辣,坐等D3 ...
- P4035 [JSOI2008]球形空间产生器 (向量,高斯消元)
题面 有一个 n n n 维球,给定 n + 1 n+1 n+1 个在球面上的点,求球心坐标. n ≤ 10 n\leq 10 n≤10 . 题解 好久以前的题了,昨天首 A . n n n 太小了! ...
- 持久化-Word库加载项劫持
持久化-Word库加载项劫持 利用wll.xll和dll的特性来利用的 重点利用office word的信任文件来进行加载恶意代码