Python条件分支与循环

news/2024/7/25 20:15:15/文章来源:https://blog.csdn.net/xiangxi1204/article/details/139176702

        大家好,当涉及到编写高效和灵活的程序时,条件分支和循环是 Python 中至关重要的概念。它们允许我们根据不同的条件执行不同的代码块,或者重复执行一组语句。条件分支和循环是测试开发工程师在日常工作中经常使用的工具,无论是编写自动化测试脚本、处理测试数据还是构建测试框架,都离不开这些关键概念。

        在本文中,我们将探索 Python 中条件分支和循环的基本知识和用法。我们将了解条件语句如何根据条件的真假来选择性地执行代码。我们还将深入研究不同类型的循环结构,包括 for 循环和 while 循环,以及它们的灵活性和适用场景。

一、条件分支

        Python 的条件分支是一种编程结构,用于根据给定的条件选择性地执行不同的代码块。条件分支语句允许程序根据条件的真假来决定执行哪些代码。

        Python 中的条件分支主要使用 ifelif 和 else 语句来实现。条件分支允许根据给定的条件选择性地执行不同的代码块。下面我将详细介绍 Python 的条件分支语句。

1、if语句

if 语句用于执行一个代码块,当给定条件为真时执行。它的基本语法如下:

if 条件:# 执行的代码块

如果条件为真,则执行代码块;否则,跳过该代码块。

以下是一个使用 if 语句的示例:

x = 10
if x > 0:print("x 是正数")

在这个例子中,如果 x 的值大于 0,则会执行 print("x 是正数") 这行代码。

2、if-else 语句

if-else 语句用于根据条件的真假执行不同的代码块。它的基本语法如下:

if 条件:# 条件为真时执行的代码块
else:# 条件为假时执行的代码块

如果条件为真,则执行第一个代码块;否则,执行 else 后面的代码块。

以下是一个使用 if-else 语句的示例:

x = 10
if x > 0:print("x 是正数")
else:print("x 是非正数")

        在这个例子中,如果 x 的值大于 0,则会执行 print("x 是正数") 这行代码;否则,执行 print("x 是非正数")

3、if-elif-else 语句

if-elif-else 语句用于在多个条件之间进行选择。它的基本语法如下:

if 条件1:# 条件1为真时执行的代码块
elif 条件2:# 条件2为真时执行的代码块
elif 条件3:# 条件3为真时执行的代码块
...
else:# 所有条件均为假时执行的代码块

        根据条件的真假,依次检查每个条件,并执行第一个满足条件的代码块。如果所有条件均为假,则执行 else 后面的代码块。

以下是一个使用 if-elif-else 语句的示例:

x = 10
if x > 0:print("x 是正数")
elif x < 0:print("x 是负数")
else:print("x 是零")

在这个例子中,根据 x 的值,将会执行相应的代码块。

二、循环

        Python 中的循环是一种重复执行特定代码块的控制结构。循环使得我们能够有效地处理重复性任务,遍历数据集合或根据条件执行特定操作。

Python 提供了两种主要类型的循环:while 循环和 for 循环。

1、for循环

        在 Python 中,for 循环是一种用于遍历序列(如列表、字符串、元组等)或其他可迭代对象的循环结构。它允许我们逐个访问序列中的元素,并针对每个元素执行特定的代码块。下面我将详细介绍 Python 中的 for 循环。

for 循环的基本语法如下:

for 变量 in 序列:# 执行的代码块

        在每次迭代中,变量会被赋值为序列中的下一个元素,然后执行代码块,直到遍历完所有元素为止。

以下是一个使用 for 循环的示例,遍历并打印列表中的元素:

fruits = ["apple", "banana", "orange"]
for fruit in fruits:print(fruit)

        在这个例子中,for 循环遍历了列表 fruits 中的每个元素。在每次迭代中,当前元素会被赋值给变量 fruit,然后执行代码块,打印出水果的名称。

除了列表,for 循环还可以遍历其他类型的序列,如字符串、元组等。例如:

string = "Hello"
for char in string:print(char)

在这个例子中,for 循环遍历了字符串 "Hello" 中的每个字符,并打印出字符。

此外,for 循环还可以与内置函数 range() 结合使用,用于生成一系列数字。例如:

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

        在这个例子中,range(5) 生成了一个从 0 到 4 的数字序列。for 循环遍历该序列中的每个数字,并打印出数字。

        在 for 循环中,我们还可以使用 break 语句来提前结束循环,以及 continue 语句来跳过当前迭代,继续下一次迭代。这些控制流程语句可以帮助我们对循环进行更精确的控制。

2、breakcontinue 

break 语句

    break 语句用于立即终止当前所在的循环,不再执行循环中剩余的代码,并跳出循环体,继续执行循环后面的代码。它常用于在满足某个条件时提前结束循环。以下是 break 语句的使用示例:

for i in range(5):if i == 3:breakprint(i)

        在这个例子中,for 循环遍历了数字序列 range(5) 中的每个数字。当 i 的值等于 3 时,执行 break 语句,终止循环。因此,只会打印出数字 0、1、2。

continue 语句

    continue 语句用于跳过当前迭代中剩余的代码,直接进入下一次迭代。在遇到 continue 语句时,循环会立即跳到下一次迭代,而不再执行本次迭代剩余的代码。以下是 continue 语句的使用示例:

for i in range(5):if i == 2:continueprint(i)

        在这个例子中,for 循环遍历了数字序列 range(5) 中的每个数字。当 i 的值等于 2 时,执行 continue 语句,跳过本次迭代中的剩余代码。因此,不会打印出数字 2,而是继续执行下一次迭代,打印出其他数字。

    break 和 continue 语句通常与条件判断结合使用,以根据特定的条件来决定是否终止循环或跳过当前迭代。它们为我们提供了更灵活的控制循环流程的方式,使我们能够根据需要对循环进行精确的控制。

        需要注意的是,break 和 continue 语句在嵌套循环中的行为可能会受到影响。break 语句会结束当前所在的最内层循环,并开始执行下一条语句。而 continue 语句会跳过当前所在的最内层循环的剩余代码,继续下一次最内层循环的迭代。

        总结来说,break 语句用于提前结束循环,而 continue 语句用于跳过当前迭代,继续下一次迭代。这两个语句为我们提供了更多的控制循环执行流程的能力,使我们能够根据具体需求对循环进行精确的控制。

3、while循环

        在 Python 中,while 循环是一种根据条件判断来重复执行代码块的循环结构。只要给定的条件为真(True),循环就会一直执行,直到条件变为假(False)。下面我将详细介绍 Python 中的 while 循环。

while 循环的基本语法如下:

while 条件:# 执行的代码块

        在每次迭代中,首先会对条件进行判断。如果条件为真,则执行代码块;然后再次对条件进行判断,以此类推,直到条件为假,循环结束。

以下是一个使用 while 循环的示例,打印数字 0 到 4:

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

        在这个例子中,count 的初始值为 0。循环首先检查条件 count < 5,由于条件为真,执行代码块,打印出 count 的值。然后 count 的值递增,再次进行条件检查,直到 count 的值达到 5 时,循环结束。

需要注意的是,如果条件一开始就为假,那么循环内的代码块将不会执行,循环直接跳过。

        在 while 循环中,我们可以使用 break 语句来提前结束循环,以及 continue 语句来跳过当前迭代,继续下一次迭代,与 for 循环中的用法相似。

以下是一个使用 while 循环和 break 语句的示例,寻找列表中的特定元素:

fruits = ["apple", "banana", "orange", "pear"]
index = 0
while index < len(fruits):if fruits[index] == "orange":print("找到了橙子!")breakindex += 1
else:print("未找到橙子!")

        在这个例子中,循环遍历列表 fruits 中的元素,当找到值为 "orange" 的元素时,执行 break 语句,提前结束循环。如果循环正常结束而没有执行 break,则执行 else 语句块,打印出 "未找到橙子!"。

        当使用 while 循环结合 continue 语句时,可以通过跳过某些迭代来控制循环的执行流程。以下是一个使用 while 循环和 continue 语句的示例,计算列表中的奇数之和:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sum_odd = 0
index = 0while index < len(numbers):if numbers[index] % 2 == 0:index += 1continuesum_odd += numbers[index]index += 1print("奇数之和:", sum_odd)

        在这个例子中,while 循环遍历列表 numbers 中的元素。如果当前元素是偶数,即 numbers[index] % 2 == 0 条件为真,那么执行 continue 语句,跳过当前迭代,继续下一次迭代。这样可以确保只有奇数被累加到 sum_odd 变量中。在每次迭代中,如果当前元素是奇数,那么将其加到 sum_odd 中。然后 index 递增,继续下一次迭代。最终,打印出累加得到的奇数之和。

        在这个例子中,continue 语句帮助我们跳过偶数,只对奇数执行特定的操作。通过使用 continue,我们可以更精确地控制循环的执行流程,以满足特定的需求。

    while 循环也需要谨慎使用,因为如果条件一直为真,循环可能会陷入无限循环的状态,导致程序无法继续执行。因此,我们需要确保条件在循环执行过程中最终会变为假,或者使用 break 语句来提前结束循环。

        总结来说,Python 的 while 循环允许我们根据条件判断重复执行代码块,直到条件为假。它是处理重复性任务和根据条件执行特定操作的重要工具之一。同时,我们可以使用 break 和 continue 语句来对循环进行更精确的控制。

4、循环嵌套

while与for嵌套

当需要在一个循环内嵌套另一个循环时,我们可以将 for 循环和 while 循环结合使用。

以下是一个同时包含 for 循环和 while 循环的例子,用于输出九九乘法表:

for i in range(1, 10):j = 1while j <= i:print(f"{j} × {i} = {j * i}", end="\t")j += 1print()

        在这个例子中,外层的 for 循环用于控制被乘数 i,取值范围是 1 到 9。对于每个 i 的值,我们使用内层的 while 循环来生成乘法表的一行。内层的 while 循环中,初始时将乘数 j 设为 1。在每次循环中,我们打印出当前的乘法表项,并将 j 递增,直到 j 的值大于等于 i,然后换行。

        通过将 for 循环和 while 循环结合使用,我们可以生成完整的九九乘法表。这个例子展示了如何在一个循环内嵌套另一个循环,并且同时使用了 for 循环和 while 循环,以实现特定的功能。这种循环嵌套的结构可以在需要处理多维数据或复杂的迭代逻辑时非常有用。

while与while嵌套

以下是一个使用 while 循环嵌套 while 循环的例子,用于打印一个矩形图案:

rows = 5
columns = 8
i = 0while i < rows:j = 0while j < columns:print("*", end=" ")j += 1print()i += 1

        在这个例子中,外层的 while 循环用于控制打印的行数,变量 i 从 0 开始,每次递增 1,直到达到指定的行数 rows。在内层的 while 循环中,我们打印星号 * 字符,控制打印的列数。变量 j 从 0 开始,每次递增 1,直到达到指定的列数 columns

运行此代码将输出如下的矩形图案:

for与for嵌套

以下是一个使用 for 循环嵌套 for 循环的例子,用于输出九九乘法表:

for i in range(1, 10):for j in range(1, 10):print(f"{j} × {i} = {j * i}", end="\t")print()

        在这个例子中,外层的 for 循环用于控制被乘数 i,取值范围是 1 到 9。对于每个 i 的值,内层的 for 循环用于控制乘数 j,也取值范围是 1 到 9。在内层的 for 循环中,我们打印出当前的乘法表项,并使用制表符 \t 分隔每个项。

运行此代码将输出如下的九九乘法表:

5、使用循环的注意事项

在使用 Python 循环时,有几个方面需要注意:

  • 循环条件:确保循环条件正确,并且能够在循环执行过程中最终变为假。否则,循环可能会陷入无限循环的状态,导致程序无法继续执行。

  • 循环变量的更新:在循环体内,确保更新循环变量的值,以便在每次迭代中逐步改变条件,使循环能够最终结束。

  • 循环控制语句的正确使用:了解并正确使用循环控制语句,如 break 和 continuebreak 用于提前结束循环,而 continue 用于跳过当前迭代,继续下一次迭代。

  • 避免无限循环:确保循环的终止条件被满足,避免无限循环。如果循环意外陷入无限循环,可以使用 Ctrl+C 组合键终止程序的执行。

  • 循环效率:在迭代大量数据或执行复杂操作的情况下,要考虑循环的效率。避免在循环内部执行过多的重复计算或频繁的 I/O 操作,可以通过优化算法或缓存结果来提高循环效率。

  • 循环嵌套:当在一个循环内嵌套另一个循环时,要确保内层循环的执行条件和控制正确,避免出现逻辑错误或死循环。

  • 循环的可读性和可维护性:编写清晰、易读的循环代码,使用有意义的变量名和注释来解释循环的目的和逻辑。避免过长的循环体和复杂的嵌套结构,可以考虑将复杂的逻辑拆分成更小的函数或模块。

  • 选择合适的循环类型:Python 提供了多种循环类型,如 for 循环、while 循环和列表推导式等。根据具体的需求和情况选择合适的循环类型,以及使用适当的迭代工具和技巧,可以简化代码并提高效率。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kind: Telemetry

访问日志 访问日志提供了一种从单个工作负载实例的角度监控和理解行为的方法。 Istio 能够以一组可配置的格式为服务流量生成访问日志&#xff0c; 使操作员可以完全控制日志记录的方式、内容、时间和地点。 有关更多信息&#xff0c;请参阅获取 Envoy 的访问日志。 https:/…

二叉树(概念详解)

目录 树树的概念完全二叉树和满二叉树完全二叉树存储完全二叉树用数组存储堆 树 树是一种非线性的数据结构 树是根朝上的&#xff0c;叶子是朝下的 树是递归定义的【根N棵子树】 递归定义&#xff1a;大事化小&#xff0c;可以理解为套娃 树的子树之间是独立的&#xff0c;所…

conda 环境找不到 libnsl.so.1

安装prokka后运行报错 perl: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory 通过conda list 可以看到 有libsnl 2.00版本&#xff0c;通过修改软链接方式进行欺骗

面试题:字符串“1024“不强转怎么变成数字1024(ASCII应用)

面试题&#xff1a;就是面试官很秀的场合。怎么把字符串"1024"转成1024 1.ASCII码表是什么&#xff1f; ASCII(American Standard Code for Information Interchange)码表使用用于将字符转换成对应数字的编码规范。它由美国国家标准协会(ANSI)于1963年制定&#xf…

Llama模型家族训练奖励模型Reward Model技术及代码实战(二)从用户反馈构建比较数据集

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

AAAI2024 基于扩散模型 多类别 工业异常检测 DiAD

前言 本文分享一个基于扩散模型的多类别异常检测框架&#xff0c;用于检测工业场景的缺陷检测或异常检测。 设计SG语义引导网络&#xff0c;在重建过程中有效保持输入图像的语义信息&#xff0c;解决了LDM在多类别异常检测中的语义信息丢失问题。高效重建&#xff0c;通过在潜…

rust语言初识

程序设计实践课上水一篇ing 来源&#xff1a;rust基础入门-1.初识rust-酷程网 (kucoding.com) rust作为一名新兴语言&#xff0c;与go又有些许不同&#xff0c;因为它的目标是对标系统级开发&#xff0c;也就是C、C这两位在编程界的位置。比如我们最常用的windows系统&#x…

【漏洞复现】用友NC registerServlet JNDI 远程代码执行漏洞(XVE-2024-10248)

0x01 产品简介 用友NC是 用友软件股份有限公司开发的一套企业级管理软件系统。它是一个基于互联网的多层应用系统&#xff0c;旨在为中大型企业提供全面、集成的管理解决方案。是一种商业级的企业资源规划云平台&#xff0c;为企业提供全面的管理解决方案&#xff0c;包括财务…

2024年蓝桥杯Web开发【大赛大纲】15届

一、 组别 Web应用开发分为&#xff1a;大学组和职业院校组。 每位选手只能申请参加其中一个组别的竞赛。各个组别单独评奖。 研究生和本科生只能报大学组。 其它高职高专院校可自行选择报任意组别。 二. 竞赛赛程 省赛时长&#xff1a;4小时。 决赛时长&#xff1a;4小…

springcloud-服务拆分与远程调用

一 微服务 1.1简单了解 SpringCloud SpringCloud是目前国内使用最广泛的微服务框架。官网地址&#xff1a;Spring Cloud。 SpringCloud集成了各种微服务功能组件&#xff0c;并基于SpringBoot实现了这些组件的自动装配&#xff0c;从而提供了良好的开箱即用体验&#xff1a…

FME学习之旅---day28

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 教程&#xff1a;CSV 入门 逗号分隔值 &#xff08;CSV&#xff09; 是一种以 ASCII 文件格式存储结构化信息的方法&#xff0c;从而使其成为一个非常简单的数据库。这使其成为电子表格、数据…

Aws CodeCommit代码仓储库

1 创建IAM用户 IAM创建admin用户&#xff0c;增加AWSCodeCommitFullAccess权限 2 创建存储库 CodePipeline -> CodeCommit -> 存储库 创建存储库 3 SSH 1) window环境 3.1.1 上载SSH公有秘钥 生成SSH秘钥ID 3.1.2 编辑本地 ~/.ssh 目录中名为“config”的 SSH 配置文…

Java | Leetcode Java题解之第104题二叉树的最大深度

题目&#xff1a; 题解&#xff1a; class Solution {public int maxDepth(TreeNode root) {if (root null) {return 0;}Queue<TreeNode> queue new LinkedList<TreeNode>();queue.offer(root);int ans 0;while (!queue.isEmpty()) {int size queue.size();wh…

[xx点评完结]——白马点评完整代码+rabbitmq实现异步下单+资料,免费

项目所有功能已测&#xff0c;均可以跑通&#xff0c;Jmeter和RabbitMQ也都测了。 项目源码:dianpinghui: 仿黑马点评项目 资料: https://pan.baidu.com/s/1kTCn9PxgeIey90WgM4KRqA?pwdn66b 对佬有帮助可以给个star哈&#xff0c;感谢&#x1f339;&#x1f339;&#x1f3…

rk3568_semaphore

文章目录 前言1 什么是信号量1.1 信号量API函数2、信号量实验2.1 实验目的2.2函数源码2.3 运行结果图前言 本文记录rk3568开发板的信号量实验 1 什么是信号量 信号量是同步的一种方式,常常用于控制对共享资源的访问。 举个例子:停车场的停车位有100个,这100个停车位就是共…

了解区块链基础设施,共同构建安全且强大的Sui网络

区块链基础设施的范畴很广&#xff0c;但其核心是那些直接与网络互动的计算机。这些实体通常被称为节点&#xff0c;分为不同的类型&#xff0c;例如维护完整区块链副本的全节点&#xff0c;以及作为共识决定者的验证节点。除了这两种类型之外&#xff0c;还有其他类型的节点&a…

DataGear 制作服务端分页的数据可视化看板

DataGear 2.3.0 版本新增了附件图表数据集特性&#xff08;在新建图表时将关联的数据集设置为 附件 &#xff0c;具体参考官网文档定义图表章节&#xff09;&#xff0c;在制作看板时&#xff0c;可以基于此特性&#xff0c;结合dg-chart-listener&#xff0c;利用服务端数据扩…

服务器数据恢复—RAID5阵列崩溃如何恢复上层OA和oracle数据库的数据?

服务器数据恢复环境&故障&#xff1a; 某公司的一台服务器中的raid5磁盘阵列有两块磁盘先后掉线&#xff0c;服务器崩溃。故障服务器的操作系统为linux&#xff0c;操作系统部署了oa&#xff0c;数据库为oracle。oracle数据库已经不再对该oa系统提供后续支持&#xff0c;用…

LabVIEW高低温试验箱控制系统

要实现LabVIEW高低温试验箱控制系统&#xff0c;需要进行硬件配置、软件设计和系统集成&#xff0c;确保LabVIEW能够有效地监控和控制试验箱的温度。以下是详细说明&#xff1a; 硬件配置 选择合适的试验箱&#xff1a; 确定高低温试验箱的型号和品牌。 确认试验箱是否支持外…

springboot项目部署到linux服务器

springboot后端 修改前 修改后 vue前端 修改前 将地址中的 localhost改为 ip 重新生成war包 war上传到linux的tomcat的webapps下 其他环境配置和macOS大差不差 Tomcat安装使用与部署Web项目的三种方法_tomcat部署web项目-CSDN博客