31天Python入门——第5天:循环那些事儿

在这里插入图片描述

你好,我是安然无虞。

文章目录

    • 1. while循环
      • 1.1 while循环的嵌套
      • 1.2 补充学习:print函数
    • 2. for循环
      • 2.1 range函数
      • 2.2 for循环
      • 2.3 continue和break以及return
      • 2.4 for循环的嵌套
    • 3. 补充学习
      • 3.1 enumerate函数
      • 3.2 zip函数
      • 3.3 不要在遍历列表的过程中删除元素

在这里插入图片描述

循环 是编程语言常见的一种流程控制

所谓循环 就是反复的执行一段代码

我们人类语言要让别人反复的做一些事,可以这样说: 请你一直怎样怎样,或者请你反复怎样怎样

Python语言要让计算机反复的做一些事 就要使用循环语句

Python中有两种类型的循环: while 循环 和 for 循环

1. while循环

while循环 是: 检查一个条件表达式,只要条件表达式计算结果为True 时, 就执行下面缩进的代码

如此反复,直到条件表达式计算结果为False时,结束 循环

while循环的基本语法:

while 条件:条件满足时,做的事情1条件满足时,做的事情2passi = 0# 冒号和缩进不要忘了.# 当条件的运算结果为True的时候, 会运行while代码块下的代码.# 若while后的条件一直为True, 则会一直循环运行while代码块下的代码.# 若为False, 则表示结束循环.# 所以需要设置循环终止的条件,否则将进入无限循环.

案例:

 *******************************************************# 打印这样的一个高为10的直角三角形.i = 1while i <= 10:print('*' * i)i += 1

对于while循环的使用需要当心死循环, 所以需要注意循环条件.

1.1 while循环的嵌套

当我们需要在while循环内执行另一个循环时,我们可以使用while循环嵌套的形式

while循环嵌套的基本语法

 while 条件1:条件1满足时,做的事情1条件1满足时,做的事情2passwhile 条件2:条件2满足时,做的事情1条件2满足时,做的事情2pass# 第一个while循环将重复执行内部代码块,直到条件1不再满足为止。在内部代码块中,我们有另一个while循环,它将重复执行内部代码块,直到条件2不再满足为止。这种嵌套的循环结构可以用于处理许多问题.# 需要注意的是,在使用嵌套循环时,我们需要仔细考虑内部和外部循环之间的交互,以确保程序能够正确地执行。另外,需要注意的是,循环嵌套可能会导致程序的执行速度变慢,因此我们应该尽可能地避免不必要的循环嵌套.

案例1: 打印99乘法表

 1x1=1	1x2=2	2x2=4	1x3=3	2x3=6	3x3=9	1x4=4	2x4=8	3x4=12	4x4=16	1x5=5	2x5=10	3x5=15	4x5=20	5x5=25	1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36	1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49	1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64	1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81
 """1x1=11x2=2	2x2=41x3=3	2x3=6	3x3=91x4=4	2x4=8	3x4=12	4x4=161x5=5	2x5=10	3x5=15	4x5=20	5x5=251x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=361x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=491x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=641x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81
"""# 1. 外部循环 ✖右边是外部循环# 2. 内部循环 ✖左边是内部循环i = 1while i <= 9:j = 1while j <= i:print(f'{j}x{i}={j*i}', end='\t')j += 1print('')i += 1

1.2 补充学习:print函数

系统方法print的定义:

def print(self, *args, sep=' ', end='\n', file=None):pass

默认情况下调用print()方法会自动换行,因为参数end的缺省值是'\n'
比如:

print('hello world')

`如果想要指定结尾的表现,可以修改参数end的取值``,比如设置为空就和C语言中的printf函数一样了,不会默认换行

print('hello world', end='')

2. for循环

2.1 range函数

在学习for循环之前, 先来学习range语句. 这是一个最常与for循环一起用的语句.

语法:

 range(start, stop[, step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

2.2 for循环

在python中, 除了while循环语句, 还提供了另外一种循环: for循环语句. 也叫做遍历.

语法:

 for 临时变量 in 序列(可迭代对象):# for循环体的代码块# for循环中定义了一个临时变量,那么在整个循环体中都可以使用这个变量,包括循环体内部的if语句或者嵌套的循环, 但是在for循环的循环体外就不要使用此临时变量了.

for循环是一种常见的迭代结构, 用于遍历序列中的元素, 在python中, for循环可以用于遍历列表, 元组, 字符串, 字典, 集合等容器类型中的元素, 并将这些元素逐一赋值给循环中的临时变量. 然后执行特定的操作, 循环会一直重复执行, 直到序列中的所有元素都被遍历完成. 对于序列中的每个元素, 都会执行一次循环体中的代码块.

for循环通常有一个循环变量, 一个序列,和一个代码块组成, 循环变量用于存储当前迭代的元素, 序列是要遍历的容器类型, 代码块则是在每个迭代步骤中要执行的操作, 在每个迭代步骤中, 循环变量都会被赋值为序列中的下一个元素, 然后执行代码块. 当序列中的所有元素都被遍历完成后, 循环结束.

for循环简单易懂, 代码结构清晰, 可读性强, 是一种高效的可靠的循环结构.

for循环和while循环两者能完成的功能差不多.

但是也是有区别的:

  1. for循环用于遍历序列(例如列表、元组、字符串等)或其他可迭代对象,并且在每次迭代中,都会将序列中的一个元素赋值给循环变量,直到序列中的所有元素都被遍历完毕,循环结束. while循环则用于在条件为真时执行一段代码块,直到条件为假为止.
  2. for循环不需要显式地计数器变量,也不需要显式地定义循环条件,因为循环变量会自动遍历整个序列.而while循环则需要显式地定义循环条件,并在代码块内控制循环计数器的更新.

总之,for循环适用于已知数量的序列或可迭代对象的遍历,而while循环适用于未知数量的循环执行,需要手动控制循环计数器和条件.

2.3 continue和break以及return

continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环.

break用来跳出整个循环

很多初学者,经常会搞不清 break 和 return的区别
首先, return 只能用在函数里面, 表示 从函数中返回
代码主体部分是不能用return的

比如,下面的代码执行起来就会报错

while True:command = input("请输入命令:")if command == 'exit':returnprint(f'输入的命令是{command}')print('程序结束')

提示:

SyntaxError: 'return' outside function

因为 return 是表示从函数中返回,它 是不能用在 函数外面的

函数中的循环体内的代码, 使用 return 和 break 都可以从循环中跳出
但是,break 只是 跳出循环, 如果循环后面还有代码, 会进行执行,如下

def inputCommand():while True:command = input("请输入命令:")if command == 'exit':breakprint(f'输入的命令是{command}')print('末尾语句')inputCommand()

执行该函数,输入 exit 发现,还会打印出 末尾语句 这句话

return 则会从函数里面立即返回, 函数体内的后续任何代码都不执行了,我们把上面的代码中的break 换成return, 如下

def inputCommand():while True:command = input("请输入命令:")if command == 'exit':returnprint(f'输入的命令是{command}')print('末尾语句')inputCommand()

执行该函数,输入 exit 发现,就不会打印出 末尾语句 这句话.

2.4 for循环的嵌套

语法:

 for 临时变量1 in 序列1(可迭代对象):# for循环体的代码块# for循环体的代码块# for循环体的代码块for 临时变量2 in 序列2(可迭代对象):# for循环体的代码块# for循环体的代码块# for循环体的代码块for i in range(10):print(f"外层循环i:{i}")for j in range(10):print(f"内层循环j:{j}")

注意点:

continue和break在嵌套循环中, 只对当前循环起作用.

 for i in range(10):print(f"外层循环i:{i}")for j in range(10):print(f"内层循环j:{j}")breakprint(f'哈哈哈哈{i}')

3. 补充学习

3.1 enumerate函数

有的时候, 在使用for循环从列表或者元组中遍历元素的时候, 除了要获取每个元素, 还需要得到每个元素在列表元组里面的索引.

enumerate() 执行之后每次迭代都会返回一个元组, 元组里面有两个元素, 依次是元素的索引和元素本身

比如, 找出下面列表中年龄大于17岁的学员, 打印出他们在列表中的索引:

studentAges = ['小王:17', '小赵:16', '小李:18', '小孙:16', '小徐:18']

这时候可以使用 enumerate 函数, 像下面这样:

studentAges = ['小王:17', '小赵:16', '小李:18', '小孙:16', '小徐:18']# enumerate(studentAges) 执行之后每次迭代返回一个元组
# 元组里面有两个元素, 依次是元素的索引和元素本身
for idx, student in enumerate(studentAges):if int(student.split(':')[-1]) > 17:print(idx)

3.2 zip函数

Python中有个内置函数zip, 常用来依次组合多个列表或者元组, 将里面相同索引的数据放入一组, 方便循环使用

比如:

names    = ['张三', '李四', '王五']  # 姓名
salaries = [18000, 11000, 15000]   # 对应薪资name_salary = zip(names, salaries)for name, salary in name_salary:print(name, salary)

运行结果是:

张三 18000
李四 11000
王五 15000

如果,两个列表里面元素个数不相等, zip以少的那个为准,比如:

names    = ['张三', '李四', '王五']  # 姓名
salaries = [18000, 11000]   # 对应薪资,少一个name_salary = zip(names, salaries)for name, salary in name_salary:print(name, salary)

运行结果是:

张三 18000
李四 11000

3.3 不要在遍历列表的过程中删除元素

看下面这段代码,把列表中值为 4 的元素删除

list1 = [ 4, 4, 1, 2]for idx, num in enumerate(list1):if num == 4:list1.pop(idx)print(list1)

运行结果是:

[4, 1, 2]

因为遍历过程中删除一个元素,使得列表的长度发生了变化,后面的元素索引被提前了,就会跳过一个元素

所以遍历 列表(包括后面要学习的字典)时, 不要在过程中删除元素
可以新建一个列表,这样:

list1 = [ 4, 4, 1, 2]list2 = []for idx, num in enumerate(list1):if num != 4:list2.append(num)print(list2)
遇见安然遇见你,不负代码不负卿。
谢谢老铁的时间,咱们下篇再见~

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

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

相关文章

T3 出行:网约车全栈分布式数据库升级实践

现今&#xff0c;网约车已成为民众日常出行不可或缺的选择。伴随“互联网出行”模式的快速推进&#xff0c;庞大的出行数据应运而生&#xff0c;如同构建了城市交通系统的数字神经脉络。与此同时&#xff0c;对高效数据存储与深入数据分析的需求也在持续攀升。 T3 出行于2019年…

区块链技术在供应链管理中的应用与创新

在当今全球化的商业环境中&#xff0c;供应链管理的复杂性与日俱增。从原材料采购到最终产品交付&#xff0c;涉及众多环节和参与者&#xff0c;信息的透明度、准确性和安全性至关重要。区块链技术的出现&#xff0c;为供应链管理带来了全新的解决方案&#xff0c;正在逐步改变…

蓝桥每日打卡--打家劫舍4

#蓝桥#JAVA#打家劫舍4 题目描述 沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。 由于相邻的房屋装有相互连通的防盗系统&#xff0c;所以小偷 不会窃取相邻的房屋 。 小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃…

c#难点整理

1.何为托管代码&#xff0c;何为非托管代码 托管代码就是.net框架下的代码 非托管代码&#xff0c;就是非.net框架下的代码 2.委托的关键知识点 将方法作为参数进行传递 3.多维数组 4.锯齿数组 5.多播委托的使用 6.is运算符 相当于逻辑运算符是 7.as 起到转换的作用 8.可…

Nginx代理本机的443到本机的8080端口

1. 准备工作 确认已生成 IP 的 HTTPS 证书 假设你已通过 mkcert 生成证书&#xff08;如 192.168.199.191.pem 和 192.168.199.191-key.pem&#xff09;&#xff0c;并已安装 CA 证书&#xff08;运行过 mkcert -install&#xff09;。 Nginx 安装 • 若未安装 Nginx&#…

善用批处理的for命令倍增效率(附彩蛋:windows官方bug)

前言 在我们工作中,如果使用Windows系统,善用批处理命令,特别是在批量的文件处理,文本处理时能帮助我们极大地提升工作效率,起到事半功倍的效果! 但很多同学,对批处理的使用更多还停留在可以将多个command命令组合到一起执行,省去重复敲命令和等待的时间。这个其实只…

数据结构之栈的2种实现方式(顺序栈+链栈,附带C语言完整实现源码)

对于逻辑关系为“一对一”的数据&#xff0c;除了用顺序表和链表存储外&#xff0c;还可以用栈结构存储。 栈是一种“特殊”的线性存储结构&#xff0c;它的特殊之处体现在以下两个地方&#xff1a; 1、元素进栈和出栈的操作只能从一端完成&#xff0c;另一端是封闭的&#xf…

Camera2 API拍照失败问题实录:从错误码到格式转换的排坑之旅

一、问题背景 在开发基于Camera2 API的相机应用时&#xff0c;我们遇到了一个棘手的问题&#xff1a;预览功能在所有设备上工作正常&#xff0c;但在某特定安卓设备上点击拍照按钮后无任何响应。值得注意的是&#xff0c;使用旧版Camera API时该设备可以正常拍照。本文记录了完…

Jmeter旧版本如何下载

1.Jmeter最新版本下载位置 https://jmeter.apache.org/download_jmeter.cgi2.Jmeter旧版本下载位置 https://archive.apache.org/dist/jmeter/binaries稳定版本&#xff1a;5.4.1

css-grid布局

文章目录 1、布局2、网格轨道3、间距Gap4、网格线5、网格别名 当一个 HTML 元素将 display 属性设置为 grid 或 inline-grid 后&#xff0c;它就变成了一个网格容器&#xff0c;这个元素的所有直系子元素将成为网格元素。 1、布局 启用grid布局类似与flex布局&#xff0c;不过g…

SolidWorks使用显卡教程

操作步骤&#xff1a; 打开注册表编辑器 按下键盘上的 Win R 组合键&#xff0c;输入 regedit 并按回车键&#xff0c;打开注册表编辑器。 导航到显卡信息路径 在注册表中依次展开以下路径&#xff1a; plaintext HKEY_CURRENT_USER\Software\SolidWorks\SOLIDWORKS 2021\Per…

【C++11】左值引用、右值引用、移动语义和完美转发

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;左值引用和右值引用 &#x1f38f;左值和左值引用 &#x1f38f;右值和右值引用 &#x1f4cc;左值引用和右值引用比较 &#x1f38f;左值引用 &#x1f38f;右值…

麒麟系列Linux发行版探秘

以下内容摘自《银河麒麟操作系统进阶应用》一书。 银河麒麟操作系统&#xff08;Kylin&#xff09; 银河麒麟&#xff08;Kylin&#xff09;操作系统是中国自主研发的一款基于Linux内核的操作系统。它的发展历程可以追溯到2002年&#xff0c;最初由国防科技大学主导研发&…

【机密计算顶会解读】11:ACAI——使用 Arm 机密计算架构保护加速器执行

导读&#xff1a;本文介绍ACAI&#xff0c;其构建一个基于CCA的解决方案&#xff0c;使得机密虚拟机能够安全地使用加速器&#xff0c;同时保持与现有应用程序的兼容性和安全性&#xff0c;能够实现对加速器的安全访问。 原文链接&#xff1a;ACAI: Protecting Accelerator Ex…

第一天 UnityShader的结构

Shader初学者的学习笔记 第一天 Unity Shader的结构 文章目录 Shader初学者的学习笔记前言一、Unity Shader结构二、Unity Shader结构解析① Properties② Tags③ RenderSetup(可选状态)④ Name⑤ [Tags]⑥ [RenderSetup]⑦ 顶点着色器和片元着色器的代码 (Unity最聪明的孩子)…

VL开源模型实现文本生成图片

一、 基础知识 根据描述生成图片的视觉-语言模型&#xff08;Vision-Language Models, VL 模型&#xff09;是近年来多模态生成领域的热点研究方向。这些模型能够根据自然语言描述生成高质量的图像&#xff0c;广泛应用于艺术创作、设计辅助、虚拟场景构建等领域。 1 根据描述…

【Java SE】抽象类/方法、模板设计模式

目录 1.抽象类/方法 1.1 基本介绍 1.2 语法格式 1.3 使用细节 2. 模板设计模式&#xff08;抽象类使用场景&#xff09; 2.1 基本介绍 2.2 具体例子 1.抽象类/方法 1.1 基本介绍 ① 当父类的某些方法&#xff0c;需要声明&#xff0c;但是又不确定如何实现时&#xff…

【人工智能】LM Studio 的 GPU 加速:释放大模型推理潜能的极致优化

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着大语言模型(LLM)的广泛应用,其推理效率成为限制性能的关键瓶颈。LM Studio 作为一个轻量级机器学习框架,通过 GPU 加速显著提升了大…

深度学习:从零开始的DeepSeek-R1-Distill有监督微调训练实战(SFT)

原文链接&#xff1a;从零开始的DeepSeek微调训练实战&#xff08;SFT&#xff09; 微调参考示例&#xff1a;由unsloth官方提供https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen2.5_(7B)-Alpaca.ipynbhttps://colab.research.google.com/git…

流畅如丝:利用requestAnimationFrame优化你的Web动画体验

requestAnimationFrame 是前端开发中用于优化动画性能的 API。它允许浏览器在下一次重绘之前执行指定的回调函数&#xff0c;通常用于实现平滑的动画效果。 1.作用 优化性能&#xff1a;requestAnimationFrame 会根据浏览器的刷新率&#xff08;通常是 60Hz&#xff0c;即每秒…