Python条件分支与循环
大家好,当涉及到编写高效和灵活的程序时,条件分支和循环是 Python 中至关重要的概念。它们允许我们根据不同的条件执行不同的代码块,或者重复执行一组语句。条件分支和循环是测试开发工程师在日常工作中经常使用的工具,无论是编写自动化测试脚本、处理测试数据还是构建测试框架,都离不开这些关键概念。
在本文中,我们将探索 Python 中条件分支和循环的基本知识和用法。我们将了解条件语句如何根据条件的真假来选择性地执行代码。我们还将深入研究不同类型的循环结构,包括 for
循环和 while
循环,以及它们的灵活性和适用场景。
一、条件分支
Python 的条件分支是一种编程结构,用于根据给定的条件选择性地执行不同的代码块。条件分支语句允许程序根据条件的真假来决定执行哪些代码。
Python 中的条件分支主要使用 if
、elif
和 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、break
与continue
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
和continue
。break
用于提前结束循环,而continue
用于跳过当前迭代,继续下一次迭代。 -
避免无限循环:确保循环的终止条件被满足,避免无限循环。如果循环意外陷入无限循环,可以使用
Ctrl+C
组合键终止程序的执行。 -
循环效率:在迭代大量数据或执行复杂操作的情况下,要考虑循环的效率。避免在循环内部执行过多的重复计算或频繁的 I/O 操作,可以通过优化算法或缓存结果来提高循环效率。
-
循环嵌套:当在一个循环内嵌套另一个循环时,要确保内层循环的执行条件和控制正确,避免出现逻辑错误或死循环。
-
循环的可读性和可维护性:编写清晰、易读的循环代码,使用有意义的变量名和注释来解释循环的目的和逻辑。避免过长的循环体和复杂的嵌套结构,可以考虑将复杂的逻辑拆分成更小的函数或模块。
-
选择合适的循环类型:Python 提供了多种循环类型,如
for
循环、while
循环和列表推导式等。根据具体的需求和情况选择合适的循环类型,以及使用适当的迭代工具和技巧,可以简化代码并提高效率。
相关文章:

Python条件分支与循环
大家好,当涉及到编写高效和灵活的程序时,条件分支和循环是 Python 中至关重要的概念。它们允许我们根据不同的条件执行不同的代码块,或者重复执行一组语句。条件分支和循环是测试开发工程师在日常工作中经常使用的工具,无论是编写…...

AI手语研究数据集;视频转视频翻译和风格化功能如黏土动画;AI检测猫咪行为;开放源码的AI驱动搜索引擎Perplexica
✨ 1: Prompt2Sign 多语言手语数据集,便捷高效用于手语研究。 Prompt2Sign 是一个全面的多语言手语数据集,旨在通过工具自动获取和处理网络上的手语视频。该数据集具有高效、轻量的特点,旨在减少先前手语数据集的不足之处。该数据集目前包含…...

四川景源畅信:新人做抖店的成本很高吗?
随着社交媒体的兴起,抖音成为了一个新兴的电商平台——抖店。不少创业者和商家看中了其庞大的用户基础,想要通过开设抖店来拓展销路。然而,对于刚入行的新手来说,成本问题总是让人犹豫不决。究竟新人做抖店的成本高不高?本文将围…...

ChatGPT原创指令大全(持续更新)
随着ChatGPT在互联网上的使用越来越多,但很多人在使用ChatGPT的过程中会觉得得到的答案并不是很精准。究其原因其实是你给它的命令不够准确、不够到位。实际现在网上已经很多关于ChatGPT的网站,可以快速生成带有快捷键的ChatGPT指令。但是对于不熟悉Chat…...

Java实现对PDF、纵向、横向页面添加自定义水印功能
Java实现对PDF、纵向、横向页面添加自定义水印 效果图 -- 纵向 页面PDF使用到JAR Maven依赖版本效果图 -- 横向页面PDF 效果图 – 纵向 页面PDF 代码如下: 使用到JAR Maven依赖版本 <dependency><groupId>org.apache.pdfbox</groupId><artifa…...

设计模式15——享元模式
写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 享元模式(Flyweigh…...

多模态中的模态有哪些
“多模态”这个名字中的“模态”(modality),指的是不同的数据类型或信息源。在多模态大模型中,常见的模态包括: 文本模态: 包括自然语言文本、语音识别文本等。 图像模态: 指图像数据ÿ…...

Java练习题(八)
36.关于抽象类叙述正确的是? (B ) A.抽象类不能实现接口 B.抽象类必须有“abstract class”修饰 C.抽象类必须包含抽象方法 D.抽象类也有类的特性,可以被实例化 37.以下说法错误的是(C) A.数组是一个对象 B.数组不是一种原…...

Linux文本文件管理003
★排序、去重、统计★ 1)排序 sort -n按照数值排序 -r降序排列 2)去重 uniq 过滤相邻、重复的行 -c 对重复行计数 3)统计 wc 统计文件中的字节数、单词数、行数 -l 显示行数 今天通过使用grep、awk、cut指令和上面几个选项提取文本文件…...

uniapp Androud 离线打包升级APK,覆盖安装不更新问题
Android 打包时在assets/data/dcloud_control.xml文件中,如果配置debug"true" syncDebug"true",则consle打印有效,不然没有打印数据 <hbuilder debug"true" syncDebug"true"> <apps> …...

【算法实战】每日一题:设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形,且使用矩形不能超出边界
题目 设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形建筑物侧墙,且矩形不能超出边界。 核心思路 考虑这种结构 前面递增后面一个与前面的某个高度一致,这时候考虑最下面的覆盖(即都是从最下面向上覆盖&#…...

外贸仓库管理软件:海外仓效率大幅度提升、避免劳动力积压
随着外贸业务的不断发展,如何高效管理外贸仓库,确保货物顺利流转,订单顺利处理,就变得非常重要。 现在通常的解决方案都是通过引入外贸仓库管理软件,也就是我们常说的海外仓WMS系统来解决。 今天我们就系统的探讨一下…...

6.8 LIBBPF API(七,bpf_core_read.h 函数,定义,枚举)
一,函数 void * bpf_rdonly_cast (const void *obj, __u32 btf_id) __ksym __weak 二,定义 __CORE_RELO(src, field, info) __builtin_preserve_field_info((src)->field,BPF_FIELD_##info) __CORE_BITFIELD_PROBE_READ(dst, src, fld) bpf_probe_read_kernel( \ (v…...

电脑卸载linux安装windows后每次开机都出现grub
原因分析 这是因为电脑硬盘中还存在linux系统的引导程序,并且启动顺序还在windows之前,有时候通过bios根本找不到它的存在,以至于每次windows开机出现grub之后都要输入exit退出linux的引导之后才能使得电脑进入windows,这个有时会…...

总结 HTTPS 的加密流程
一、前言 http是为了解决http存在的问题而在http基础上加入了SSL/TSL,在HTTP/2中TCP三次握手后会进入SSL/TSL握手,当SSL/TSL建立链接后,才会进行报文的传输。 二、HTTPS的混合加密 我们先来认识密钥: 密钥是用于加密和解密数据…...

Spring的FactoryBean多例问题
关于spring bean,我们了解的最多的还是单例,而多例bean,除了平时我们自己new的那些多实例外(但不属于IOC管理了),几乎很少能用到,而在spring 层面,FactoryBean刚好是多例的一个体现,…...

[nextjs]推荐几个很好看的模板网站
最近在做网站,折腾了 vue 框架,然后发现了 nextjs 框架,感觉这个做出来的网站配色很好看,然后又开始研究这个 网站配色好看是因为用的 tailwindcss,找网站过程中,发现了几个很好看的模板网站,在这里推荐下,或许你也能用得上 推荐第一个网站是: https://tailspark.co/ 有组件,也…...

《当微服务遇上Ribbon:一场负载均衡的华丽舞会》
在微服务的厨房里,如何确保每一道服务都恰到好处?揭秘Spring Cloud Ribbon如何像大厨一样精心调配资源,让负载均衡变得像烹饪艺术一样简单! 文章目录 Spring Cloud Ribbon 详解1. 引言微服务架构中的负载均衡需求Spring Cloud Rib…...

简单随机数据算法
文章目录 一,需求概述二,实现代码三、测试代码四、测试结果五、源码传送六、效果演示 一,需求概述 系统启动时,读取一组图片数据,通过接口返回给前台,要求: 图片随机相邻图片不重复 二&#…...

js画思维导图代码2
这段代码是一个使用Vue.js和D3.js构建的树形图组件。它是一个Vue组件,用于创建和显示一个交互式的树形结构图。下面是对这段代码的简要分析: 模板部分 (<template>): 定义了组件的HTML结构,包括一个隐藏的提示框(#tooltip)和一个用于显…...

使用 Flask 实现异步请求处理
文章目录 为什么需要异步请求处理?在 Flask 中实现异步请求处理使用 Flask-Cors 扩展 总结 在开发 Web 应用程序时,异步请求处理是提高性能和并发能力的重要方法之一。Flask 是一个轻量级的 Web 框架,它提供了易于使用的工具来实现异步请求处…...

关于c++的通过cin.get()维持黑框的思考
1.前言 由于本科没有学过c语言,研究生阶段接触c上手有点困难,今天遇到关于通过cin.get()来让黑框维持的原因。 2.思考 cin.get()维持黑框不消失的原因一言蔽之就是等待输入。等待键盘的输入内容并回车(一般是回车)后cin.get()才…...

fastadmin接口输出图片 自动拼接网站URL
先自定义常量 1.文件接口路径 修改核心文件 application\common\controller\Api.php/*** 构造方法* access public* param Request $request Request 对象*/public function __construct(Request $request null){$this->request is_null($request) ? Request::instance…...

VMware Workstation 不可恢复错误:(vmui) 错误代码0xc0000094
软件版本 vmware 17 错误情况 VMware Workstation 不可恢复错误:(vmui) Exception 0xc0000094 has occurred. 问题原因 VMware升级到17.0后,将虚拟机环境的【硬件兼容性】升级至Workstation 17.X后,无法修改设备参数。 解决办法 打开需…...

DockerNetwork
Docker Network Docker Network 是 Docker 引擎提供的一种功能,用于管理 Docker 容器之间以及容器与外部网络之间的网络通信。它允许用户定义和配置容器的网络环境,以便容器之间可以相互通信,并与外部网络进行连接。 Docker Network 提供了以…...

QT学习(20):QStyle类
Qt包含一组QStyle子类,这些子类(QWindowsStyle,QMacStyle等)模拟Qt支持的不同平台的样式,默认情况下,这些样式内置在Qt GUI模块中,样式也可以作为插件提供。 Qt的内置widgets使用QStyle来执行几…...

hadoop学习之MapReduce案例:输出每个班级中的成绩前三名的学生
hadoop学习之MapReduce案例:输出每个班级中的成绩前三名的学生 所要处理的数据案例: 1500100001 施笑槐,22,女,文科六班,406 1500100002 吕金鹏,24,男,文科六班,440 1500100003 单乐蕊,22,女,理科六班,359 1500100004 葛德曜,24,男,理科三班,421 15001…...

【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
背景:部分客户需求将自己网站打包成app,供用户在浏览器安装使用、 网页网址快速生成app 准备材料操作流程第一步:打开HBuilder X新建项目第二步创建Wap2App项目第三步修改App图标第四步发布app第五步查看apk 准备材料 1.需要打包的网页 2.ap…...

学习thinkphp的循环标签
1.FOREACH标签 foreach标签的用法和PHP语法非常接近,用于循环输出数组或者对象的属性,用法如下: $list User::all(); View::assign(list,$list); 模板文件中可以这样输出 {foreach $list as $key>$vo } {$vo.id}:{$vo.name} {/foreac…...

根据标签名递归读取xml字符串中element
工具类: /*** 根据标签名递归读取xml字符串中element* 例:* String xml * "<req>\n" * "<tag1></tag1>\n" * "<tag2>\n" * " <tag4></tag4>\n" * "</tag2>\n&…...