Python-程序的控制结构

news2025/2/26 2:23:35

hello,这里是Token_w的博客,欢迎各位的阅读点赞评论
今天给大家带来的是Python程序的控制结构,希望对大家有多帮助
整理不易,希望得到您的认可与点赞! 感谢!

目录

  • 知识点
  • 知识导图
  • 1、程序的基本结构
    • 1.1 程序的流程图
    • 1.2 程序的基本结构
  • 2、程序的分支结构
    • 2.1 单分支结构: if语句
    • 2.2 二分支结构: if-else语句
    • 2.3 多分支结构: if-elif-else语句
    • 2.4 判断条件及组合
  • 3、程序的循环结构
    • 3.1 程序的循环结构
    • 3.2 遍历循环: for
    • 3.3 无限循环: while
    • 3.4 循环控制: break和continue
  • 4、程序的异常处理
    • 4.1 程序的异常处理
  • 5、实例解析:猜数字游戏
  • 小结

知识点

  • 程序的三种控制结构
  • 程序的分支结构: 单分支结构、二分支结构、多分支结构
  • 程序的循环结构: 遍历循环、无限循环、break和continue循环控制
  • 程序的异常处理: try-except

知识导图

在这里插入图片描述

1、程序的基本结构

1.1 程序的流程图

程序流程图用一系列图形、流程线和文字说明描述程序的基本操作和控制流程,它是程序分析和过程描述的最基本方式。
流程图的基本元素包括7种:
在这里插入图片描述

  • 起止框:表示程序逻辑的开始或结束;
  • 判断框:表示一个判断条件,并根据判断结果选择不同的执行路径;
  • 处理框:表示一组处理过程,对应于顺序执行的程序逻辑;
  • 输入输出框:表示程序中的数据输入或结果输出;
  • 注释框:表示程序的注释;
  • 流向线:表示程序的控制流,以带箭头直线或曲线表达程序的执行路径;
  • 连接点:表示多个流程图的连接方式,常用于将多个较小流程图组织成较大流程图。
    在这里插入图片描述

程序流程图示例:由连接点A连接的一个程序

1.2 程序的基本结构

程序由三种基本结构组成:顺序结构、分支结构和循环结构
任何程序都由这三种基本结构组合而成
这些基本结构都有一个入口和一个出口。任何程序都由这三种基本结构组合而成

  • 顺序结构是程序按照线性顺序依次执行的一种运行方式,其中语句块1(S1)和语句块2(S2)表示一个或一组顺序执行的语句
    在这里插入图片描述
  • 分支结构是程序根据条件判断结果而选择不同向前执行路径的一种运行方式,基础的分支结构是二分支结构。由二分支结构会组合形成多分支结构
    在这里插入图片描述
  • 循环结构是程序根据条件判断结果向后反复执行的一种运行方式,根据循环体触发条件不同,包括条件循环和遍历循环结构
    在这里插入图片描述
  • 在三种基本控制逻辑基础上,Python语言进行了必要且适当的扩展。
  • 在分支结构原理的基础上,Python增加了异常处理,使用try-except保留字
  • 异常处理以程序异常为判断条件,根据一段代码执行的正确性进行程序逻辑选择。异常处理是分支结构的一种扩展。
  • 在循环结构原理的基础上,Python提供两个循环控制符break和continue,对循环的执行过程进行控制。break控制符用来结束当前循环,continue控制符用来结束当前循环的当次循环过程,

2、程序的分支结构

2.1 单分支结构: if语句

Python的单分支结构使用if保留字对条件进行判断,使用方式如下

if <条件>:
         语句块
  • 其中,if、:和<语句块>前的缩进都是语法的一部分。<语句块>是if条件满足后执行的一个或多个语句序列,缩进表达<语句块>与if的包含关系。<条件>是一个产生True或False结果的语句,当结果为True时,执行<语句块>,否则跳过<语句块>。
# 判断用户输入数字的奇偶性
s = eval(input("请输出一个整数:"))
if s % 2 == 0:
    print("这是个偶数")
print("输入数字是 :", s)
  • <条件>是一个或多个条件,多个条件间采用and或or进行逻辑组合。and表示多个条件“与”的关系,or表示多个条件“或”的关系
# 判断用户输入数字的特定
s = eval(input("请输出一个整数:"))
if s % 3 == 0 and s % 5 == 0:
    print("这个数字既能被3整除,又能被5整除")
print("输入数字是:", s)

2.2 二分支结构: if-else语句

Python的二分支结构使用if-else保留字对条件进行判断,语法格式如下:

if <条件>:
        <语句块1>
else:
        <语句块2>
  • 其中,if、:和语句块前的缩进都是语法的一部分。
    <语句块1>在if中<条件>满足即为True时执行,<语句块2>在if中<条件>不满足即为False时执行。简单说,二分支结构根据条件的True或False结果产生两条路径。
# 判断用户输入数字的某个属性
s = eval(input("请输出一个整数:"))
if s % 3 == 0 and s % 5 == 0:
    print("这个数字能够同时被3和5整除")
else:
    print("这个数字不能够同时被3和5整除")
  • 二分支结构还有一种更简洁的表达方式,适合<语句块1>和<语句块2>都只包含简单表达式的情况,语法格式如下:
    <表达式1> if <条件> else <表达式2>
# 判断用户输入数字的某个属性
s = eval(input("请输出一个整数:"))
token = "" if s % 3 == 0 and s % 5 == 0 else "不"
print("这个数字{}能够同时被3和5整除 ".format(token))

2.3 多分支结构: if-elif-else语句

Python的if-elif-else描述多分支结构,语句格式如下:

if <条件1>:
        <语句块1>
elif <条件2>:
        <语句块2>
...
else:
        <语句块N>

在这里插入图片描述

  • 多分支结构通常用于判断同一个条件或一类条件的多个执行路径。要注意,Python会按照多分支结构的代码顺序依次评估判断条件,寻找并执行第一个结果为True条件对应的语句块,当前语句块执行后跳过整个if-elif-else结构。
  • 利用多分支结构编写代码时要注意多个逻辑条件的先后关系。
  • 获取用户输入的一个百分制成绩,转换成五分制,给出对应 的 A、B、C、D、E等级。
# 将百分制成绩转换为五分制成绩
score = eval(input("请输出一个百分制成绩:"))
if score >= 60.0:
    grade = "D"
elif score >= 70.0:
    grade = "C"
elif score >= 80.0:
    grade = "B"
elif score >= 90.0:
    grade = "A"
else:
    grade = "E"
print("对应的五分制成绩是:{}".format(grade))
>>>请输出一个百分制成绩:80
对应的五分制成绩是:D
  • 显然,百分制80分不应该是等级D,上述代码运行正确但逻辑存在错误,在于弄错了多个逻辑条件的先后关系,修改后代码如下。
# 将百分制成绩转换为五分制成绩
score = eval(input("请输出一个百分制成绩:"))
if score >= 90.0:
    grade = "A"
elif score >= 80.0:
    grade = "B"
elif score >= 70.0:
    grade = "C"
elif score >= 60.0:
    grade = "D"
else:
    grade = "E"
print("对应的五分制成绩是: {}".format(grade))

2.4 判断条件及组合

  • 分支结构中的判断条件可以使用任何能够产生True或False的语句或函数。形成判断条件最常见的方式是采用关系操作符

在这里插入图片描述

print(4 < 5)
# True
print("Python" > "python")
# False
  • Python语言中,任何非零的数值、非空的数据类型都等价于True,0或空类型等价于False,可以直接用作判断条件。
print(0 == False)
# True
print("" == True)
# False
  • Python语言使用保留字not、and和or对条件进行逻辑运算或组合。
  • 保留字not表示单个条件的“否”关系,and表示多个条件之间的“与”关系,保留字or表示多个条件之间的“或”关系。
print(not True)
# False
a = 80
print(( a > 100) or ( a > 50 and a < 90))
# True

3、程序的循环结构

3.1 程序的循环结构

  • Python语言的循环结构包括两种:遍历循环和无限循环。
  • 遍历循环使用保留字for依次提取遍历结构各元素进行处理;
  • 无限循环使用保留字while根据判断条件执行程序。

3.2 遍历循环: for

  • 遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,对于每个所提取的元素执行一次语句块。for语句的循环执行次数是根据遍历结构中元素个数确定的。
for <循环变量> in <遍历结构>:
        <语句块>
  • 遍历结构可以是字符串、文件、range()函数或组合数据类型等。
  • 对于字符串,可以逐一遍历字符串的每个字符,基本使用方式如下:
for <循环变量> in <字符串变量>:
        <语句块>
for c in "Python":
        print(c)
'''
P
y
t
h
o
n'''
  • 使用range()函数,可以指定语句块的循环次数,基本使用方式如下:
for <循环变量> in range(<循环次数>):
        <语句块>
for i in range(5):
	print(i)
'''	
0
1
2
3
4'''
  • 遍历循环还有一种扩展模式,使用方法如下:
for <循环变量> in <遍历结构>:
        <语句块1>
else:
        <语句块2>
  • 当for循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行之后才执行并结束,因此,可以在<语句块2>中放置判断循环执行情况的语句。
for s in "PY":
    print("循环执行中: " + s)
else:
    s = "循环正常结束"
print(s)
>>>
循环执行中: P
循环执行中: Y
循环正常结束

3.3 无限循环: while

Python通过保留字while实现无限循环

while <条件>:
        <语句块>
  • 当程序执行到while语句时,判断条件如果为True,执行循环体语句,语句结束后返回再次判断while语句的条件;当条件为False时,循环终止,执行与while同级别缩进的后续语句。
n = 0
while n < 10:
        print(n)
        n = n + 3
'''
0
3
6
9'''
  • 无限循环也有一种使用保留字else的扩展模式,使用方法如下:
while <条件>:
        <语句块1>
else:
        <语句块2>
  • 在这种扩展模式中,当while循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行后才执行,因此,可以在语句块2中放置判断循环执行情况的语句。
s, idx = "PY", 0
while idx < len(s):
    print("循环执行中: " + s[idx])
    idx += 1
else:
    s = "循环正常结束"
print(s)
>>>
循环执行中: P
循环执行中: Y
循环正常结束

3.4 循环控制: break和continue

  • 循环结构有两个辅助循环控制的保留字:break和continue。break用来跳出最内层for或while循环,脱离该循环后程序从循环后代码继续执行。
while True:
    s = input("请输入一个名字(按Q退出): ")
    if s == "Q":
        break
    print("输入的名字是:", s)
print("程序退出")



>>>
请输入一个名字(按Q退出): 毛泽东
输入的名字是: 毛泽东
请输入一个名字(按Q退出): 邓小平
输入的名字是: 邓小平
请输入一个名字(按Q退出): Q
程序退出
  • 如果有2层或多层循环,break退出最内层循环。
  • continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。
for s in "PYTHON":
    if s == "Y" or s == "y":
        continue
print(s, end="")
  • continue语句和break语句的区别是:continue语句只结束本次循环,不终止整个循环的执行,而break具备结束循环的能力。

4、程序的异常处理

4.1 程序的异常处理

  • Python程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。
n = eval(input("请输入一个数字: "))
请输入一个整数: python

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    n = eval(input("请输入一个数字: "))
  File "<string>", line 1, in <module>
NameError: name 'python' is not defined
  • 由于使用了eval()函数,如果用户输入不是一个数字则可能报错。这类由于输入与预期不匹配造成的错误有很多种可能,不能逐一列出可能性进行判断。为了保证程序运行的稳定性,这类运行错误应该被程序捕获并合理控制。
  • Python语言使用保留字try和except进行异常处理,基本的语法格式如下:
try:
        <语句块1>
except:
        <语句块2>
  • 语句块1是正常执行的程序内容,当执行这个语句块发生异常时,则执行except保留字后面的语句块2。
try:
    n = eval(input("请输入一个数字: "))
    print("输入数字的3次方值为: ", n**3)
except:
    print("输入错误,请输入一个数字 !")
>>>
请输入一个数字: 1010
输入数字的3次方值为: 1030301000
>>>
请输入一个数字: python
输入错误,请输入一个数字!
  • 除了输入之外,异常处理还可以处理程序执行中的运行异常。
for i in range(5):
    print(10/i, end=" ")
'''
Traceback (most recent call last):
  File "<pyshell#12>", line 2, in <module>
'''
    print(10/i, end=" ")
'''
ZeroDivisionError: division by zero'''
try:
    for i in range(5):
    print(10/i, end=" ")
except:
    print("某种原因,出错了!")

5、实例解析:猜数字游戏

  • 编写一个“猜数字游戏”的程序,在1到1000之间随机产生一个数,然后请用户循环猜测这个数字,对于每个答案只回答“猜大了”或“猜小了”,直到猜测准确为止,输出用户的猜测次数。
  • 为了产生随机数,需要使用Python语言的随机数标准库random
import random
target = random.randint(1,1000)
  • 根据程序需求,需要考虑不断地让用户循环输入猜测值,并根据猜测值和目标值之间的比较决定程序逻辑。
import random
target = random.randint(1,1000)
count = 0
while True:
    guess = eval(input('请输入一个猜测的整数(1至1000):'))
    count = count + 1
    if guess > target:
        print('猜大了')
    elif guess < target:
        print('猜小了')
    else:
        print('猜对了')
        break
print("此轮的猜测次数是:", count)
  • 由于使用了eval(input())方式获得用户输入,如果用户输入非数字产生运行错误,程序将会退出。为了增加程序鲁棒性,增加异常处理机制。
import random
target = random.randint(1,1000)
count = 0
while True:
    try:
        guess = eval(input('请输入一个猜测的整数(1至1000):'))
    except:
        print('输入有误,请重试,不计入猜测次数哦!')
        continue
    count = count + 1
    if guess > target:
        print('猜大了')
    elif guess < target:
        print('猜小了')
    else:
        print('猜对了')
        break
print("此轮的猜测次数是:", count)

该程序执行效果如下:

>>>
请输入一个猜测的整数(11000)500
猜大了
请输入一个猜测的整数(11000):Python
输入有误,请重试,不计入猜测次数哦!
请输入一个猜测的整数(11000)260
猜小了
请输入一个猜测的整数(11000)380
猜大了
请输入一个猜测的整数(11000)300
猜小了
请输入一个猜测的整数(11000)340
猜小了
请输入一个猜测的整数(11000)360
猜小了
请输入一个猜测的整数(11000)370
猜对了
此轮的猜测次数是: 7

小结

讲解了程序的三种控制结构,具体讲解了分支结构的三种类型:单分支结构、二分支结构合多分支结构,以及判断条件的组合。进一步具体讲解了循环结构的两种类型:遍历循环和无限循环,以及循环控制符break和continue。最后,讲解了程序的基本异常处理方法。通过猜数字游戏的实例帮助大家理解程序结构和异常处理的运用。

猜数字就是人生历程,运气重要?方法重要?或许,快乐的经历才最重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/862959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

整理分享Springboot项目中java实现将数据库表中指定表中的的数据按条件导出生成Excel表格的功能实现(学习笔记)

在Spring Boot中&#xff0c;我们可以使用Apache POI库来实现将数据库表中的数据导出为Excel表格。可以根据条件从数据库中查询数据并将其导出为Excel&#xff1a;如下 准备工作&#xff1a;首先&#xff0c;确保在你的项目中引入Apache POI依赖。在pom.xml文件中添加以下依赖项…

电脑蓝屏显示恢复怎么办,电脑蓝屏后出现恢复界面怎么回事

电脑蓝屏显示恢复怎么办,电脑蓝屏后出现恢复界面怎么回事 目录 下面是问题描述&#xff08;看看和你遇到的问题一不一样&#xff09; 图片一 图片二 图片三 开始解决问题 步骤 1&#xff1a;耐心等待 步骤 2&#xff1a;重启计算机 步骤 3&#xff1a;进入安全模式 步骤…

USB协议精读

1.1.枚举 1.1.1.上电连接过程 1.1.2.设备识别过程 1.1.3.枚举过程 1.1.3.1.获取设备描述符&#xff08;只关注设备描述符中最大数据包长度&#xff09; 1.1.3.2.设置设备针对主机的唯一从机地址 1.1.3.3.获取完整设备描述符 1.1.3.4.获取配置描述符 先获取标准配置描述符&a…

关于replace()字符串截取的思考

使用replace方法获取组装所需字符串: 总结&#xff1a; 以上方法可用于获取文件名、获取获取文件后缀、组装自己想要的字符串

为Windows Terminal设置背景图片

直接通过界面上选项无法达到修改背景图片的目的&#xff0c;后再在官网&#xff0c;和git上找到通过修改配置文件来更改背景图片 首先打开设置界面 点击左下角打开settings.json文件 在json中profiles关键字default选项相面增加几个key,就像下面 修改前修改后 修改后的termin…

【问题记录】antd icons报rev属性缺失错误

闲来无事将项目中的antd从v4升级到了v5&#xff0c;之前正常的页面中如有图标&#xff0c;如<PlusOutlined />&#xff0c;总是报以下错误&#xff1a; TS2741: Property rev is missing in type {} but required in type Pick<AntdIconProps, "name" …

Games101学习笔记2

参考博客&#xff1a;GAMES101 梳理 / 个人向图形学笔记_games101笔记_river_of_sebajun的博客-CSDN博客 lecture 05 Rasterization 1(Triangles) 光栅化 把东西画在屏幕上的过程就是光栅化的过程 视口变换 为什么模型用三角形&#xff1f; 最基本的几何平面&#xff1b;保…

虹科Pico技术交流会 | 广州站圆满成功,免拆诊断汽修之旅启程成都!

全国巡回 / 技术交流 / 以技会友 成都&#xff1a;2023.9.2~9.3 主办单位 广州虹科电子科技有限公司 Tech Gear 免拆诊断学院 支持单位 英国Pico Technology Ltd. 上周末&#xff08;8月5、6号&#xff09;虹科Pico汽车示波器技术交流会在广州圆满举办&#xff01;在本次…

PPSLick.js-个人/初始团队的网站基础弹窗组件库,快速创建登录、注册、搜索、联系我和订阅等弹窗组件,无需写html+css

PPSlick 个人/初始团队的网站基础弹窗组件库 一个javascript组件库&#xff0c;提供基本的联系我、登录、注册、搜索和邮件订阅之类的弹窗组件&#xff08;无需写htmlcss&#xff09;&#xff0c;拿来即用 使用参考 1、搜索组件&#xff0c;参考testsearch.html //创建一个搜…

合并两个有序链表 题解

题目描述&#xff1a;21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 题解思路&#xff1a; 创建一个新的链表&#xff0c;并将头节点设置为 newHead&#xf…

合成数据平台:释放结构化数据的生成式 AI 的力量

推荐&#xff1a;使用 NSDT场景编辑器 快速助你搭建可二次编辑的3D应用场景 创建机器学习或深度学习模型非常简单。如今&#xff0c;有不同的工具和平台不仅可以自动化创建模型的整个过程&#xff0c;甚至可以帮助您为特定数据集选择最佳模型。 通过创建模型解决问题所需的基本…

Linux系列:从0到1用Docker部署springboot项目

目录 1.前提条件 2.编写DockerFile镜像文件 3.打包SpringBoot项目 4.通过软件Xftp进行传输&#xff08;*&#xff09; 1.点击“文件-新建”​编辑 5.操作远程主机 1.docker构建 2.容器运行 6.容器的关闭和删除 1.前提条件 Linux、docker、xftp的安装、一台可以访问的远…

2023年“云舟杯”视频孪生演讲大赛总决赛完美收官

8月4日&#xff0c;智汇云舟举办的2023年“云舟杯”视频孪生演讲大赛总决赛以直播形式完美收官。来自全国近200家合作伙伴代表齐聚线上&#xff0c;共同观摩比赛。在巅峰之战中&#xff0c;参赛学员们充分展示了各自对行业数字化转型的敏锐洞察、对智汇云舟视频孪生技术与产品的…

Fortinet数据中心防火墙及服务ROI超300%!Forrester TEI研究发布

近日&#xff0c;专注网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;联合全球知名分析机构Forrester发布总体经济影响独立分析报告&#xff0c;详细阐述了在企业数据中心部署 FortiGate 下一代防火墙&#xff08;NGFW&#xff09…

从黑马程序员电商视觉设计上半年就业数据,看当下数字产业人才需求热点

近期&#xff0c;老牌数字化人才培训机构传智教育旗下的高端IT教育品牌——黑马程序员发布了2023上半年电商视觉设计学科的就业数据&#xff0c;班级平均就业率92%&#xff0c;一线城市平均月薪9161元&#xff0c;所有毕业生平均月薪8969元。 电商视觉设计行业热度高&#xff0…

Git (2)

文章目录 1. 删除文件2. 分支管理2.1 理解分支2.2 分支创建 &#xff0c; 分支切换2.3 分支合并2.4 删除分支2.5 合并冲突2.6 合并模式2.7 分支策略2.8 bug 分支2.9 强制删除分支 3. 远程操作3.1 创建远程仓库3.2 克隆远程仓库3.3 推送3.4 拉取3.5 gitignore 文件3.6 配置别名 …

Android侧滑栏(一)可缩放可一起移动的侧滑栏

在实际的各类App开发中&#xff0c;经常会需要做一个左侧的侧滑栏&#xff0c;类似于QQ这种。 今天这篇文章总结下自己在开发中遇到的这类可以跟随移动且可以缩放的侧滑栏。 一、实现原理 使用 HorizontalScrollView 实现一个水平方向的可滑动的View&#xff0c;左布局为侧滑…

为c语言安装easyx图形库

按照图上的步骤&#xff0c;安装easyx图形库。 接下来看代码&#xff1a; #include<easyx.h> #include<stdio.h> #define width 800 #define height 600int main() {initgraph(width, height); // 初始化窗口&#xff08;宽度&#xff0c; 高度&#xff09;…

OpenHarmony社区运营报告(2023年7月)

本月快讯 • 2023年7月28日-29日&#xff0c;全球软件质量&效能大会&#xff08;简称“QECon”&#xff09;圆满举行&#xff0c;OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;以“优质高效测试助力OpenHarmony北向应用生态赋能”为主题&#xff0c;以…

Java项目作业~ 通过html+Servlet+MyBatis,完成站点信息的添加功能

需求&#xff1a; 通过htmlServletMyBatis&#xff0c;完成站点信息的添加功能。 以下是站点表的建表语句&#xff1a; CREATE TABLE websites (id int(11) NOT NULL AUTO_INCREMENT,name char(20) NOT NULL DEFAULT COMMENT 站点名称,url varchar(255) NOT NULL DEFAULT ,…