提升代码逻辑的感觉——python循环语句
提升代码逻辑的感觉——python循环语句
简介
循环是编程中的一个非常重要的概念,它用于处理重复性任何和迭代草错,通过循环我们能优化并简化代码,提高代码的可维护性,在Python中循环是一种控制结构,允许我们重复执行特定的代码块,直到达到某个条件或执行特定次数为止。循环是一种迭代结构,用于处理重复的任务、遍历数据集合等。
循环的目的是解决需要重复做相同事情的问题,而不是一遍又一遍地重复编写相同的代码。通过使用循环,我们可以通过更少的代码来实现重复的操作。
python中循环的基本类型
while
循环:
while
循环在给定条件为真时重复执行代码块。它先对条件进行检查,如果条件为真,则执行代码块,然后再次检查条件。如果条件仍为真,则继续重复执行代码块,直到条件为假时终止循环。
while condition:# 代码块
-
当我们需要根据一个条件重复执行代码块时,可以使用
while
循环。下面是一个详细的示例,演示了while
循环的用法:count = 0 while count < 5:print(f"Count: {count}")count += 1
在上述代码中,我们定义了一个名为
count
的变量,并初始化为 0。然后使用while
循环,设置条件count < 5
,也就是count
小于 5 时循环继续执行。循环内部的代码块是通过缩进表示的,会重复执行直到条件为假(即
count
不再小于 5)。在每次循环迭代时,我们打印出当前count
的值,并将count
增加 1,以便在下一次循环时递增。输出结果:
Count: 0 Count: 1 Count: 2 Count: 3 Count: 4
从输出结果可以看出,
while
循环在每次迭代中打印出count
的值,并逐渐递增,直到达到循环终止条件(count
不再小于 5)为止。
for
循环:
for
循环用于遍历可迭代对象(如列表、字符串等)中的元素,对每个元素执行相同的代码块。它会依次取出序列中的每个元素,直到所有元素都被遍历完为止,它与while循环的判断条件相反,当条件为假,则执行代码块。
for variable in iterable:# 代码块
在 for
循环中,variable
是一个变量名,用于存储每次循环迭代中的元素值。iterable
是一个可迭代对象,可以是列表、字符串、元组等。
- 遍历列表:遍历一个列表中的元素,并将每个元素进行操作。
fruits = ["apple", "banana", "orange"]
for fruit in fruits:print(fruit)
- 遍历字符串:遍历一个字符串的每个字符,并执行操作。
message = "Hello, World!"
for char in message:print(char)
- 遍历字典:遍历一个字典的键或值,并进行相应的处理。
person = {"name": "John", "age": 25, "city": "New York"}
for key in person:print(key, "=", person[key])
- 遍历数字范围:使用
range()
函数生成一系列数字,并进行操作。
for num in range(1, 5):print(num)
控制关键字
break:
break
关键字用于跳出当前所在的循环,终止循环的执行。- 当执行
break
语句时,程序会立即退出当前循环,并继续执行循环之后的代码。 break
可以用于跳出for
循环和while
循环。无论在哪种循环中,一旦满足某个条件,执行break
后循环会立即停止。
示例:
for i in range(1, 6):if i == 3:breakprint(i)
输出结果:
1
2
在上述示例中,当 i
的值等于 3 时,执行了 break
语句,从而跳出了 for
循环。
continue:
continue
关键字用于终止当前迭代的循环,然后开始下一次迭代。- 当执行
continue
语句时,程序会跳过当前迭代中的剩余代码,并开始下一次迭代的执行。 continue
只能用于循环中,可以在for
循环或while
循环中使用。
- 当执行
示例:
for i in range(1, 6):if i == 3:continueprint(i)
输出结果:
1
2
4
5
在上述示例中,当 i
的值等于 3 时,执行了 continue
语句。这导致该迭代被跳过,程序开始下一次迭代。
总结:
break
用于立即终止整个循环的执行。continue
用于终止当前迭代的执行,然后开始下一次迭代。- 通过
break
和continue
,我们可以根据特定条件自定义循环的控制流程,实现更灵活和精确的控制。
循环的嵌套
循环的嵌套指的是在一个循环体中包含另一个循环结构,即将一个循环放置在另一个循环内部。这样做的目的是在特定条件下多次执行内层循环,使程序能够处理更复杂的任务和数据结构。
在 Python 中,我们可以使用 for
循环和 while
循环来实现循环的嵌套。以下是两个个示例,展示了循环嵌套的用法:
for循环嵌套
for i in range(1, 4):for j in range(1, 4):print(i, j)
在上述示例中,外层循环使用 for
循环,迭代变量 i
的值从 1 到 3(不包括 4)。内层循环也是使用 for
循环,迭代变量 j
的值从 1 到 3(不包括 4)。因此,内层循环中的代码块会在每次外层循环迭代时执行 3 次。
输出结果:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
在输出结果中,我们可以看到变量 i
和 j
的值从 1 到 3 进行组合,形成了一个 3x3 的表格。
while循环嵌套
i = 1
while i <= 3:j = 1while j <= 3:print(i, j)j += 1i += 1
在上述示例中,外层循环使用 while
循环来迭代变量 i
,只有在 i
小于等于 3 的情况下才会执行循环。内层循环也是使用 while
循环,迭代变量 j
只有在 j
小于等于 3 的情况下才会执行循环。
输出结果:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
在输出结果中,我们可以看到变量 i
和 j
的值从 1 到 3 进行组合,形成了一个 3x3 的表格。
嵌套循环在处理多维数据结构、生成组合或排列、遍历嵌套列表等场景中非常有用。然而,需要注意控制循环的嵌套层数和合理设计内外层循环的条件和逻辑,以避免产生无限循环或逻辑错误。
总结
分支结构和循环结构,都是编程中的非常重要的概念,正确的使用它们可以解决很多实际的问题。
while循环它适合用于需要在满足某个条件时重复执行代码的环境:
-
需要根据特定条件不断迭代执行的任务:
while
循环提供了一种方法,可以使用条件判断来控制循环是否继续执行。只要条件为真,代码块就会继续执行,循环会一直持续下去,直到条件为假。 -
处理动态条件的情况:在某些情况下,循环的退出条件可能是在循环的过程中动态改变的,而不是在循环开始时就确定的。
while
循环可以根据任何条件的改变来灵活地调整循环行为。 -
实现更复杂的逻辑流程:
while
循环可以嵌套在其他循环中或与其他条件语句结合使用,以实现更复杂的逻辑控制和条件流程。通过适当设计循环条件和循环体内的操作,可以实现各种复杂的循环结构。
for循环它使用用于它主要用于遍历可迭代对象中的元素
-
遍历序列或集合中的元素:通过
for
循环,可以便捷地遍历列表、字符串、元组和集合等对象中的每个元素,并对它们进行操作。 -
迭代固定次数的循环:使用
range()
函数结合for
循环,可以轻松实现在特定范围内重复执行固定次数的任务。 -
遍历字典的键或值:
for
循环可以用于遍历字典的键,并通过键来访问字典中的值,或者直接遍历字典的值。
而break和continue的区别就在于
break
用于立即终止当前所在循环结构的执行,跳出循环。continue
用于跳过当前迭代中剩余的代码,并开始下一次迭代。break
和continue
是在循环中控制流程的关键字,能够提高代码的灵活性和执行效率。- 但是,它们的使用需要谨慎,以确保循环逻辑的正确性和代码的可读性。
相关文章:

提升代码逻辑的感觉——python循环语句
提升代码逻辑的感觉——python循环语句 简介 循环是编程中的一个非常重要的概念,它用于处理重复性任何和迭代草错,通过循环我们能优化并简化代码,提高代码的可维护性,在Python中循环是一种控制结构,允许我们重复执行…...

【ARM Coresight 系列文章 20 -- linux perf 与 ARM coresight】
文章目录 1.1 Perf Introduction1.1.1 Perf 架构图1.1.2 Perf Tools 介绍1.1.3 Perf 命令介绍1.2 Events1.2.1 Perf 与 PMU 的关系1.2.2 Hardware events1.2.1.1 linux perf 事件分类1.2.2 Software Events1.2.3 Tracepoint Events1.3 Perf 工具使用1.4 用户态开发1.4.1 用户态…...

微服务之Nacos
1 版本说明 官网地址: https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 1.1 2021.x 分支 适配 SpringBoot 2.4, Spring Cloud 2021.x 版本及以上的Spring Cloud Alibaba 版本如下表(最新版本用*标记&am…...

jvm 新生代的区域划分
虚拟机将内存分为一块较大的 Eden 空间和两块较小的 Survivor 空间,每次分配内存只使用 Eden 和其中一块 Survivor。发生垃圾收集时,将 Eden 和 Survivor 中仍然存活的对象一次性复制到另外一块 Survivor 空间上,然后直接清理掉 Eden 和已用过…...

【C++】对于string的补充(成员函数c_str()、大小写转换、字符串和实数之间的相互转换)
前言 本篇文章记录的是一些关于string的补充说明 string与const char*之间的相互转换 const char* 转换成string 在C中存在着从const char到string的隐式类型转换,换句话说,如果一个函数的参数类型是string类,直接传入const char类型的参…...

华为OD机试真题【羊狼农夫过河】
1、题目描述 【羊、狼、农夫过河】 羊、狼、农夫都在岸边,当羊的数量小于狼的数量时,狼会攻击羊,农夫则会损失羊。农夫有一艘容量固定的船,能够承载固定数量的动物。要求求出不损失羊情况下将全部羊和狼运到对岸需要的最小次数。…...

【线性代数-3Blue1Brown】- 5 三维空间的线性变换
飞书原文档:Docs...

Maven入门教程(二):idea/Eclipse使用Maven
Maven入门教程(一):安装Maven环境 4.开发工具配置 4.1 idea配置 idea有多个版本,配置是一样的,只是配置页面的入口不一样 旧版idea 新版idea 4.2 Eclipse配置 打开Eclipse,菜单中选择:Window -> Preference ->…...

【MySQL】MySQL里的用户账户和角色是什么?如何管理?
用户(user)验证和授权创建用户账户连接服务器查看用户账户设置 角色(role)创建角色 操作用户帐户和角色重命名删除 感谢 💖 用户(user) 在MySQL中,用户是数据库访问的主要实体。每个…...

vbs病毒
vbs脚本:VBS脚本病毒原理分析和防范 疯狂代码 http://CrazyCoder.cn/ Sh t t p : / C r a z y C o d e r . c n / S e c u r i t y / Ar t i c l e 7 2 0 0 8 . h t m l 网络流行让我们世界变得更加美好但它也有让人不愉快时候当您收到封主题为1LoveYou” 邮件用兴奋 得几乎快发…...

用Java实现Huffman编码
文章目录 前言一、实现思路二、准备Huffman结点三、主要实现 前言 在使用http1.1协议传输数据的时候,会有一些固定的字段,比如cookie、编码方式、接收的数据类型,另外会有一些大量重复的字段造成请求报文过于冗长,为了解决这个问…...

day-04 基于UDP的服务器端/客户端
一.理解UDP (一)UDP套接字的特点 UDP套接字具有以下特点: 无连接性:UDP是一种无连接的协议,这意味着在发送数据之前,不需要在发送方和接收方之间建立连接。每个UDP数据包都是独立的,它们可以独…...

FFmpeg rtp rtp_mpegts的区别
rtp 在FFmpeg中,rtpenc是一个用于将音视频数据封装成RTP(Real-time Transport Protocol)数据包并发送到网络上的编码器。RTP是一种用于实时传输音视频数据的协议,常用于视频会议、流媒体等场景。 rtpenc可以将音视频数据封装成R…...

【链表OJ】相交链表 环形链表1
前言: 💥🎈个人主页:Dream_Chaser~ 🎈💥 ✨✨刷题专栏:http://t.csdn.cn/UlvTc ⛳⛳本篇内容:力扣上链表OJ题目 目录 一.leetcode 160. 相交链表 1.问题描述: 2.解题思路: 二.leetcode 141.环形链表 …...

DevOps之自动化测试
什么是自动化测试? 明确一下自动化测试不是什么。自动化测试不是指自动化生成测试代码,而是自动化地执行由开发人员或测试人员编写的测试代码。正如下面这句谚语:“绝不要手工去做任何可以被自动化处理的事情。——Curt Hibbs” 之前是由人…...

Java 程序打印 OpenCV 的版本
我们可以使用 Java 程序来使用 OpenCV。 OpenCV 的使用需要动态库的加载才可以。 加载动态库 到 OpenCV 的官方网站上下载最新的发布版本。 Windows 下载的是一个可执行文件,没关系,这个可执行文件是一个自解压程序。 当你运行以后会提示你进行解压。…...

ChatGPT⼊门到精通(2):ChatGPT 能为我们做什么
⼀、雇佣免费的⼲活⼩弟 有了ChatGPT后,就好⽐你有了好⼏个帮你免费打⼯的「⼩弟」,他们可以帮你做很多 ⼯作。我简单总结⼀些我⽬前使⽤过的⽐较好的基于ChatGPT的服务和应⽤。 1、总结、分析 当我们在阅读⼀些⽂章和新闻的时候,有的⽂章写…...

线程和进程的区别是什么?
线程(Thread)和进程(Process)是操作系统中两个重要的概念,用于管理程序的执行。它们有以下区别: 定义:进程:进程是程序的一个执行实例,它包含了程序的代码、数据以及执行上下文。进程是操作系统分配资源和调度的基本单位。线程:线程是进程的子执行单元,一个进程可以…...

力扣27.移除元素
27. 移除元素 提示 简单 1.9K 相关企业 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序…...

指针(个人学习笔记黑马学习)
1、指针的定义和使用 #include <iostream> using namespace std;int main() {int a 10;int* p;p &a;cout << "a的地址为:" << &a << endl;cout << "a的地址为:" << p << endl;…...

vue 路由动态加载
在 Vue.js 中,可以使用 webpack 的动态导入语法来实现路由动态加载。下面是一个简单的示例: const Home () > import(/* webpackChunkName: "home" */ ./views/Home.vue); const About () > import(/* webpackChunkName: "about…...

电脑识别不了固态硬盘怎么办?
在使用固态硬盘时,可能会出现电脑无法识别的情况,这时我们就无法使用固态硬盘中的数据。那么,电脑识别不了固态硬盘怎么办? 为什么电脑识别不了固态硬盘? 一般来说,电脑识别不了固态硬盘是因为以下3个原因…...

QCustomPlot 绘制卡顿问题
大数据量导致曲线绘制卡顿问题 这里提供一个思路在跟踪源码中发现底层卡顿在vector的resize() 此处扩容中 所以尽量使用下面的接口 /*! \overloadAdds the provided data point as \a key and \a value to the current data.Alternatively, you can also access and modify t…...

uni-app开发小程序,radio单选按钮,点击可以选中,再次点击可以取消
一、实现效果: 二、代码实现: 不适用官方的change方法,自己定义点击方法。 动态判断定义的值是否等于遍历的值进行回显,如果和上一次点击的值一样,就把定义的值改为null <template><view><radio-group&…...

【Qt专栏】实现单例程序,禁止程序多开的几种方式
目录 一,简要介绍 二,实现示例(Windows) 1.使用系统级别的互斥机制 2.通过共享内存(进程间通信-IPC) 3.使用命名互斥锁(不推荐) 4.使用文件锁 5.通过网络端口检测 一…...

力扣26. 删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做…...

【机器学习】鸢尾花分类-逻辑回归示例
这段代码是一个完整的示例,展示了如何使用逻辑回归对鸢尾花数据集进行训练、保存模型,并允许用户输入数据进行预测。以下是对这段代码的总结:功能: 这段代码演示了如何使用逻辑回归对鸢尾花数据集进行训练,并将训练好的…...

Flink CDC介绍
1.CDC概述 CDC(Change Data Capture)是一种用于捕获和处理数据源中的变化的技术。它允许实时地监视数据库或数据流中发生的数据变动,并将这些变动抽取出来,以便进行进一步的处理和分析。 传统上,数据源的变化通常通过…...

Java集合sort排序报错UnsupportedOperationException处理
文章目录 报错场景排查解决UnmodifiableList类介绍 报错场景 我们使用的是PostgreSQL数据库,存储业务数据,业务代码使用的是Spring JPA我们做的是智慧交通信控平台,有个功能是查询展示区域的交通态势,需要按照不同维度排序展示区…...

安防监控/磁盘阵列存储/视频汇聚平台EasyCVR调用rtsp地址返回的IP不正确是什么原因?
安防监控/云存储/磁盘阵列存储/视频汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RT…...