【Python】从基础到进阶(四):深入了解Python中的控制流

news2024/11/28 6:31:29

在这里插入图片描述

🔥 个人主页:空白诗

在这里插入图片描述

文章目录

    • 一、引言
    • 二、条件语句
      • 1. if 语句
      • 2. if-else 语句
      • 3. if-elif-else 语句
      • 4. 嵌套条件语句
      • 5. 三元运算符
    • 三、循环语句
      • 1. for 循环
        • 基本语法
        • 使用range() 函数
        • 遍历列表、字典和字符串
      • 2. while 循环
        • 基本语法
        • 无限循环与终止条件
      • 3. 循环控制语句
        • break 语句
        • continue 语句
        • else 语句
    • 四、异常处理
      • 1. 异常的概念
      • 2. try-except 语句
        • 基本语法
      • 3. 多个 except 块
      • 4. try-except-else 语句
        • 基本语法
      • 5. try-except-finally 语句
        • 基本语法
      • 6. 自定义异常
        • 基本语法
    • 五、案例:用户登录系统
      • 1. 需求分析
      • 2. 实现条件判断进行用户验证
      • 3. 使用循环处理多次尝试
      • 4. 异常处理确保程序健壮性
      • 5. 完整案例代码
    • 六、总结
      • 1. 条件语句
      • 2. 循环语句
      • 3. 异常处理
      • 4. 案例应用
      • 5. 实际编程建议

在这里插入图片描述


一、引言

在前几篇文章中,我们已经学习了Python编程的基础知识,包括变量、数据类型、输入输出操作以及运算符和表达式。这些知识为编写简单的程序打下了坚实的基础。然而,在编写实际应用程序时,通常需要根据不同的条件执行不同的代码块,或重复执行某些操作。这就需要使用到控制流语句。

控制流是指程序中执行代码的顺序,掌握控制流语句可以使我们的程序更加灵活和强大。在本篇文章中,我们将深入探讨Python中的控制流,包括条件语句、循环语句和异常处理。通过学习这些内容,您将能够编写更复杂、更健壮的程序,并且能够处理各种可能出现的异常情况。希望通过本文的学习,您能全面掌握Python中的控制流,为编写高级应用程序打下坚实的基础。

在这里插入图片描述


二、条件语句

条件语句使程序能够根据不同的条件执行不同的代码块,从而实现更复杂的逻辑控制。在Python中,主要使用ifif-elseif-elif-else语句来实现条件判断。此外,还可以使用三元运算符进行简化的条件判断。

1. if 语句

if语句用于判断一个条件是否为真,如果条件为真,则执行相应的代码块。

示例代码:

x = 10
if x > 5:
    print("x 大于 5")

2. if-else 语句

if-else语句在if条件为假时执行else部分的代码块。

示例代码:

x = 3
if x > 5:
    print("x 大于 5")
else:
    print("x 小于或等于 5")

3. if-elif-else 语句

if-elif-else语句用于多个条件判断,当第一个条件为假时,依次判断后续条件,直到找到为真的条件或执行else部分。

示例代码:

x = 7
if x > 10:
    print("x 大于 10")
elif x > 5:
    print("x 大于 5 且小于等于 10")
else:
    print("x 小于或等于 5")

4. 嵌套条件语句

条件语句可以嵌套使用,即在一个条件语句的代码块内再使用另一个条件语句。

示例代码:

x = 8
if x > 5:
    if x > 7:
        print("x 大于 7")
    else:
        print("x 大于 5 但小于等于 7")
else:
    print("x 小于或等于 5")

5. 三元运算符

三元运算符是一种简写形式的条件语句,用于简化简单的条件判断。它的语法是:[on_true] if [expression] else [on_false]

示例代码:

x = 5
result = "大于 5" if x > 5 else "小于或等于 5"
print(result)

通过掌握条件语句,您可以根据不同的条件执行不同的操作,从而实现更复杂的程序逻辑。在下一部分中,我们将探讨Python中的循环语句,进一步增强我们的程序控制能力。


三、循环语句

循环语句用于重复执行某段代码,直到满足特定的条件。Python中主要有两种循环语句:for循环和while循环。此外,还有一些控制循环执行的语句,如breakcontinue。通过掌握这些循环语句,您可以更加灵活地控制代码的执行流程。

1. for 循环

for循环用于遍历序列(如列表、元组、字典、字符串等),在序列的每个元素上执行指定的代码块。

基本语法
for item in sequence:
    # 执行代码块

示例代码:

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
使用range() 函数

range()函数用于生成一个数字序列,常用于for循环中来控制循环的次数。

示例代码:

for i in range(5):
    print(i)

输出结果:

0
1
2
3
4
遍历列表、字典和字符串

Python的for循环可以方便地遍历各种序列类型。

遍历列表:

numbers = [1, 2, 3, 4, 5]
for number in numbers:
    print(number)

遍历字典:

student_scores = {"Alice": 85, "Bob": 90, "Charlie": 78}
for student, score in student_scores.items():
    print(f"{student}: {score}")

遍历字符串:

text = "Hello, World!"
for char in text:
    print(char)

2. while 循环

while循环在条件为真时重复执行代码块,一旦条件为假,循环终止。

基本语法
while condition:
    # 执行代码块

示例代码:

count = 0
while count < 5:
    print(count)
    count += 1

输出结果:

0
1
2
3
4
无限循环与终止条件

如果循环条件始终为真,while循环将无限执行下去。为了避免无限循环,需要设置合适的终止条件。

示例代码:

while True:
    response = input("输入 'exit' 以终止循环: ")
    if response == 'exit':
        break

3. 循环控制语句

Python提供了一些控制循环执行流程的语句,如breakcontinueelse

break 语句

break语句用于提前终止循环。

示例代码:

for i in range(10):
    if i == 5:
        break
    print(i)

输出结果:

0
1
2
3
4
continue 语句

continue语句用于跳过当前迭代,直接进入下一次迭代。

示例代码:

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)

输出结果:

1
3
5
7
9
else 语句

else语句可以与forwhile循环一起使用,当循环正常结束时执行else块中的代码。

示例代码:

for i in range(5):
    print(i)
else:
    print("循环正常结束")

输出结果:

0
1
2
3
4
循环正常结束

通过掌握循环语句和控制语句,您可以更灵活地控制代码的执行流程,提高程序的效率和灵活性。在下一部分中,我们将探讨Python中的异常处理,进一步增强程序的健壮性和可靠性。


四、异常处理

在编程过程中,异常(Exception)是指在程序运行时发生的错误。异常处理使程序能够在遇到错误时不中断执行,并采取适当的措施进行处理,从而提高程序的健壮性和可靠性。Python提供了丰富的异常处理机制,以下是对异常处理的详细介绍。

1. 异常的概念

异常是程序运行时发生的错误。常见的异常包括除零错误、文件未找到错误、索引越界错误等。未处理的异常会导致程序终止运行。

示例代码:

# 除零错误示例
result = 10 / 0  # 将抛出ZeroDivisionError

2. try-except 语句

try-except语句用于捕获和处理异常。当try块中的代码发生异常时,程序会跳转到对应的except块中执行。

基本语法
try:
    # 尝试执行的代码块
except ExceptionType:
    # 发生异常时执行的代码块

示例代码:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("除零错误!")

3. 多个 except 块

可以为不同类型的异常指定不同的处理方式。通过多个except块,可以分别处理不同的异常类型。

示例代码:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("除零错误!")
except ValueError:
    print("值错误!")

4. try-except-else 语句

try-except-else语句允许在try块中没有发生异常时执行else块中的代码。

基本语法
try:
    # 尝试执行的代码块
except ExceptionType:
    # 发生异常时执行的代码块
else:
    # 未发生异常时执行的代码块

示例代码:

try:
    result = 10 / 2
except ZeroDivisionError:
    print("除零错误!")
else:
    print("计算成功,结果是:", result)

5. try-except-finally 语句

try-except-finally语句确保无论是否发生异常,finally块中的代码都会执行。通常用于释放资源或进行清理操作。

基本语法
try:
    # 尝试执行的代码块
except ExceptionType:
    # 发生异常时执行的代码块
finally:
    # 无论是否发生异常都执行的代码块

示例代码:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("除零错误!")
finally:
    print("无论是否发生异常,都执行此代码")

6. 自定义异常

您可以定义自己的异常类型,以便在特定情况下抛出和处理自定义的异常。

基本语法
class CustomError(Exception):
    pass

try:
    raise CustomError("这是一个自定义异常")
except CustomError as e:
    print("捕获到自定义异常:", e)

示例代码:

class NegativeNumberError(Exception):
    """定义一个处理负数的自定义异常"""
    pass

def check_positive(number):
    if number < 0:
        raise NegativeNumberError("不允许负数:{}".format(number))

try:
    check_positive(-5)
except NegativeNumberError as e:
    print("捕获到异常:", e)

通过掌握异常处理,您可以提高程序的健壮性,确保在发生错误时程序能够优雅地处理并继续执行。在下一部分,我们将通过一个具体的案例来应用这些知识。


五、案例:用户登录系统

为了更好地理解和应用条件语句、循环语句和异常处理,我们将通过一个具体的案例——实现一个简单的用户登录系统。这个案例包括用户输入用户名和密码进行验证,允许用户多次尝试登录,并通过异常处理确保程序的健壮性。

1. 需求分析

我们需要实现以下功能:

  1. 用户输入用户名和密码。
  2. 验证用户名和密码是否正确。
  3. 如果用户名或密码错误,允许用户多次尝试登录。
  4. 如果输入的次数超过限制,程序提示并终止。
  5. 使用异常处理确保程序在输入过程中不会因错误而崩溃。

2. 实现条件判断进行用户验证

首先,我们定义正确的用户名和密码,并使用条件语句进行验证。

示例代码:

correct_username = "user1"
correct_password = "password123"

username = input("请输入用户名:")
password = input("请输入密码:")

if username == correct_username and password == correct_password:
    print("登录成功!")
else:
    print("用户名或密码错误!")

3. 使用循环处理多次尝试

我们使用while循环允许用户多次尝试登录,并设置一个尝试次数的限制。

示例代码:

correct_username = "user1"
correct_password = "password123"
max_attempts = 3
attempts = 0

while attempts < max_attempts:
    username = input("请输入用户名:")
    password = input("请输入密码:")

    if username == correct_username and password == correct_password:
        print("登录成功!")
        break
    else:
        print("用户名或密码错误!")
        attempts += 1

    if attempts == max_attempts:
        print("尝试次数过多,登录失败!")

4. 异常处理确保程序健壮性

在用户输入过程中,我们使用异常处理来捕获和处理可能的输入错误(如输入为空的情况)。

示例代码:

correct_username = "user1"
correct_password = "password123"
max_attempts = 3
attempts = 0

while attempts < max_attempts:
    try:
        username = input("请输入用户名:")
        if not username:
            raise ValueError("用户名不能为空")
        
        password = input("请输入密码:")
        if not password:
            raise ValueError("密码不能为空")

        if username == correct_username and password == correct_password:
            print("登录成功!")
            break
        else:
            print("用户名或密码错误!")
            attempts += 1

        if attempts == max_attempts:
            print("尝试次数过多,登录失败!")
    except ValueError as e:
        print("输入错误:", e)

5. 完整案例代码

下面是完整的用户登录系统代码,结合了条件判断、循环和异常处理。

correct_username = "user1"
correct_password = "password123"
max_attempts = 3
attempts = 0

while attempts < max_attempts:
    try:
        username = input("请输入用户名:")
        if not username:
            raise ValueError("用户名不能为空")
        
        password = input("请输入密码:")
        if not password:
            raise ValueError("密码不能为空")

        if username == correct_username and password == correct_password:
            print("登录成功!")
            break
        else:
            print("用户名或密码错误!")
            attempts += 1

        if attempts == max_attempts:
            print("尝试次数过多,登录失败!")
    except ValueError as e:
        print("输入错误:", e)

通过这个案例,我们运用了条件语句、循环语句和异常处理技术,构建了一个简单的用户登录系统。这不仅帮助我们巩固了这些概念,也展示了它们在实际编程中的应用。希望通过这个案例,您能够更好地理解和应用Python中的控制流,提高编程能力。


六、总结

在本篇文章中,我们深入探讨了Python中的控制流,包括条件语句、循环语句和异常处理。通过学习这些内容,您应该能够更加灵活地控制代码的执行流程,并提高程序的健壮性。以下是本篇文章的要点回顾:

1. 条件语句

条件语句使程序能够根据不同的条件执行不同的代码块。主要包括:

  • if 语句:用于判断一个条件是否为真。
  • if-else 语句:在条件为假时执行else部分的代码。
  • if-elif-else 语句:用于多个条件的判断。
  • 嵌套条件语句:条件语句内部可以嵌套其他条件语句。
  • 三元运算符:简写形式的条件判断,用于简单的条件操作。

2. 循环语句

循环语句用于重复执行某段代码,直到满足特定的条件。主要包括:

  • for 循环:用于遍历序列(如列表、字典、字符串等)。
  • while 循环:在条件为真时重复执行代码块。
  • 循环控制语句
    • break 语句:提前终止循环。
    • continue 语句:跳过当前迭代,直接进入下一次迭代。
    • else 语句:与循环一起使用,当循环正常结束时执行else块中的代码。

3. 异常处理

异常处理使程序能够在遇到错误时不中断执行,并采取适当的措施进行处理。主要包括:

  • try-except 语句:用于捕获和处理异常。
  • 多个 except 块:分别处理不同类型的异常。
  • try-except-else 语句:当try块中没有发生异常时执行else块中的代码。
  • try-except-finally 语句:无论是否发生异常,finally块中的代码都会执行。
  • 自定义异常:定义自己的异常类型,以便在特定情况下抛出和处理自定义的异常。

4. 案例应用

通过用户登录系统的案例,我们实际应用了条件语句、循环语句和异常处理技术,构建了一个简单的用户登录系统。这不仅帮助我们巩固了这些概念,也展示了它们在实际编程中的应用。

5. 实际编程建议

  • 多练习:通过编写不同的代码段来练习条件语句、循环语句和异常处理。
  • 注重可读性:使用合适的变量名、缩进和注释来提高代码的可读性和可维护性。
  • 理解控制流:熟练掌握控制流语句,提高代码的灵活性和健壮性。

通过本篇文章的学习,相信您对Python中的控制流有了更深入的了解和掌握。希望这些知识能为您在编写高效、可读、健壮的代码时提供帮助。在接下来的文章中,我们将继续探讨更多Python编程中的重要概念和技术,敬请期待。


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

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

相关文章

Python 实现股票指标计算——BBI

BBI (Bull And Bear lndex) - 多空指标 1 公式 3日均价 3日收盘价之和 / 36日均价 6日收盘价之和 / 612日均价 12日收盘价之和 / 1224日均价 24日收盘价之和 / 24BBI (3日均价 6日均价 12日均价 24日均价) / 4 2 数据准备 我们以科创50指数 000688 为例&#xff0c…

使用Vue实现点击页面触发特效

效果描述 在页面上的指定区域内进行点击&#xff0c;则会在页面上显示设置好的随机文本&#xff0c;此文本出现后会执行动画&#xff0c;动画效果为节点在1s之内向右上方移动并在移动的过程中完成180翻转&#xff0c;最后消失。 效果展示 完整代码 <template><div…

Windows 11 Visual Studio 2022 cmake 3.29 CUDA12.5 构建VTK

The Visualization Toolkit (VTK)是一个用于操作和展示科学数据的开源软件&#xff0c;包括了二三维渲染功能。 下载VTK 从官网Download | VTK下载VTK版本&#xff0c;我下载的是9.3.1源代码&#xff0c;在Windows 11上安装。 CMake构建VTK的VS2022工程 生成与安装 分别生成De…

AI智能名片小程序:跨界融合,重塑品牌与顾客的“三度情缘”

在这个信息爆炸、竞争白热化的时代&#xff0c;品牌如何突破重围&#xff0c;与顾客建立超越常规的情感链接&#xff1f;答案或许就藏在那个看似不起眼&#xff0c;实则暗藏玄机的AI智能名片小程序里&#xff01;它不仅是技术的结晶&#xff0c;更是品牌与顾客之间“三度情缘”…

Redis持久化(AOF和RDB)

目录 前言 一.RDB 1.1手动执行 1.2自动执行 二.AOF 2.1重写机制 三.混合持久化 Redis的学习专栏&#xff1a;http://t.csdnimg.cn/a8cvV 前言 持久化&#xff0c;在之前&#xff0c;我们接触这个词汇是在mysql数据库当中的事务四大特性里。 持久性&#xff1a;指一旦事…

探索免费隧道服务:为本地开发提供自定义子域名的解决方案

目录 引言 使用Ngrok进行本地开发 免费替代方案 Localtunnel Serveo Ngrok付费计划&#xff08;有限的免费试用&#xff09; 开源替代方案 SISH 总结 引言 在Web开发中&#xff0c;将本地服务器暴露给互联网进行测试或演示是常见需求。Ngrok等工具因其便捷性而广受欢迎…

【LeetCode】分隔链表

目录 一、题目二、解法完整代码 一、题目 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1&#xff1a; 输入&a…

等保-Linux等保测评

等保-Linux等保测评 1.查看相应文件&#xff0c;账户xiaoming的密码设定多久过期 rootdengbap:~# chage -l xiaoming Last password change : password must be changed Password expires : pass…

day5 分布式节点

文章目录 1 流程回顾2 抽象 PeerPicker3 节点选择与 HTTP 客户端4 实现主流程5 main 函数测试。6 QA 本文代码地址&#xff1a; 本文是7天用Go从零实现分布式缓存GeeCache的第五篇。 注册节点(Register Peers)&#xff0c;借助一致性哈希算法选择节点。实现 HTTP 客户端&…

OpenGL-ES 学习(7) ---- VBO EBO 和 VAO

目录 VBO(Vertex Buffer Object)EBO(Element Buffer Object)VAO(Vertex Array Object) VBO(Vertex Buffer Object) EBO(Element Buffer Object) VBO(Vertex Buffer Object) 实际是指顶点缓冲器对象 在 opengl-es 2.0 的编程中&#xff0c;用于绘制图元的顶点数据是从 CPU 传…

LoadRunner-Vugen脚本使用教程

1 使用VuGen录制脚本 1.1新建脚本和解决方案 &#xff08;1&#xff09;打开VuGen&#xff0c;单击【File】→【New Script and Solution】创建项目&#xff0c;弹出Create a New Script对话框。 左侧栏是协议分类&#xff0c;每项含义如下所示&#xff1a; ● Single Pro…

数字通云平台 智慧政务OA PayslipUser SQL注入漏洞复现

0x01 产品简介 数字通云平台智慧政务OA产品是基于云计算、大数据、人工智能等先进技术,为政府部门量身定制的智能化办公系统。该系统旨在提高政府部门的办公效率、协同能力和信息资源共享水平,推动电子政务向更高层次发展。 0x02 漏洞概述 数字通云平台 智慧政务OA Paysli…

pytorch学习(六)transforms使用

1.Transforms可以对训练图像进行预处理&#xff0c;以提高模型的稳定性&#xff0c;提高泛化能力。其中包含&#xff1a; 中心裁剪、数据标准化、缩放、裁剪、旋转、仿射、反转、填充、噪声添加、灰度变换、线性变换、亮度饱和度以及对比度变换等。 所处理的图像用tensorboard…

【iOS】APP仿写——网易云音乐

网易云音乐 启动页发现定时器控制轮播图UIButtonConfiguration 发现换头像 我的总结 启动页 这里我的启动页是使用Xcode自带的启动功能&#xff0c;将图片放置在LaunchScreen中即可。这里也可以通过定时器控制&#xff0c;来实现启动的效果 效果图&#xff1a; 这里放一篇大…

基于视觉工具箱和背景差法的行人检测,行走轨迹跟踪,人员行走习惯统计matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 在三维图中&#xff0c;幅度越大&#xff0c;则表示人员更习惯的行走路线。 2.算法运行软件版本 matlab2022a 3.部分核…

【Nacos】Nacos服务注册与发现 心跳检测机制源码解析

在前两篇文章&#xff0c;介绍了springboot的自动配置原理&#xff0c;而nacos的服务注册就依赖自动配置原理。 Nacos Nacos核心功能点 服务注册 :Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务&#xff0c;提供自身的元数据&#xff0c;比如ip地址、端…

【C语言】深入解析希尔排序

文章目录 什么是希尔排序&#xff1f;希尔排序的基本实现代码解释希尔排序的优化希尔排序的性能分析希尔排序的实际应用结论 在C语言编程中&#xff0c;希尔排序是一种高效的排序算法&#xff0c;是插入排序的一种更高效的改进版本。它通过比较相距一定间隔的元素来进行排序&am…

JRT报告打印设计

检验报告单打印一直是个难点问题&#xff0c;JRT开发时候重点考虑了简化检验报告打印&#xff0c;首先采用脚本化方便快速修改报告。然后打印基础解决难点问题&#xff0c;基于JRT打印就可以简化到本文代码的水平&#xff0c;维护方便&#xff0c;结构清晰&#xff0c;上线修改…

【1】Spring Cloud 工程搭建

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;Spring学习之路&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 1. 父子工程创建 1.1 创建父工程 1.2 创建子项目 重点关注Spring C…

头发稀疏治疗笔记

1. 前言 今天去中南医院看了一下“头发稀疏”的病症&#xff1b; 2. 头皮检测 2.1 毛发光镜检查 2.2 皮肤镜影像