Python学习基础笔记六十八——循环
循环是编程语言常见的流程控制。
Python语句要让计算机反复地做一些事情,就要用到循环语句。
有While和for循环。
while循环:
command = input("请输入命令:")
while command != 'exit':print(f'输入的命令是{command}')command = input("请输入命令")
while循环是:检查一个条件表达式,只要条件表达式计算结果为True,就会执行下面缩进的代码。
如此反复执行,如果条件表达式为False,就结束循环。
command != 'exit' 这是一个条件表达式,判断输入的command这个变量值是否等于exit。
如果不等于,就开始执行下面缩进的代码,就是循环体中的代码,这个代码中还会让用户再次输入值到command。
如果用户输入的command,一直都不是exit,就会一直执行循环。
如果输入的comand等于exit,就结束循环。
这段代码写的还是比较麻烦。这样写有点啰嗦。
如果这个表达式永远为True,那么这个循环就永远不退出循环,一直处于运行状态。就变成死循环。也就是循环条件都是成立的。
死循环不一定代表这个程序是有问题的。看你程序的意图和目的来定的。

从1打印到100的代码:
i = 1
while i <= 100:print(i, end=" ")i += 1
for循环:
for循环的用法:
for循环,通常是从一个sequence类型,比如字符串、列表或者元组中依次取出每个元素进行操作。
studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']for student in studentAges:print(student)
for student in studentAgs: 这个student变量依次代表了studentAges里面的每个元素,执行下面的缩进的代码print(student)。
依次的意思:
第一次循环是取出第一个元素。
然后第二次循环是取出第二个元素。
……
如果操作一个空列表:
for i in []:print(i)
循环n次:
开发程序的时候,我们经常需要循环执行某段代码n次。
for n in range(10):print(n)
打印出来是从0到9。从0到range里面参数值-1的这个范围。
这段代码使用的是for语句和一个内置类型range。
python3中,range不是一个函数,不会返回一个数字列表,python3中range是一个类。
不想从0开始打印,而是从某个值开始,如果打印从50到60的数字。
可以使用range(50, 61) 也是那个概念:顾头不顾尾。
for n in range(50, 61):print(n, end=" ")

enumerate函数:
有的时候,在使用for循环从列表或者元组中遍历元素的时候,除了要取得每个元素,还需要得到每个元素在列表或元组里面的索引。
比如要从下面列表中找出年龄大于17的学员,并打印他们在列表中的索引。
studentAges = ['小王:17', '小赵:16', '小李:18', '小孙:16', '小徐:18']
这个时候就可以使用enumerate函数。
studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']for idx, student in enumerate(studentAges):if int(student.split(':')[1]) > 17:print(idx)print(student.split(":")[0])print(student.split(":")[1])

break终止循环:
有的时候,我们循环体中的代码发现满足某个条件,就需要终止循环。
我们使用关键字break:
while True:command = input("请输入命令:")if command == 'exit':breakprint(f'输入的命令是{command}')

输入exit就直接退出循环。
这段代码的终止条件不是通过while循环的条件判断语句来进行判断的。而是通过if语句,其中有break语句。
解释器执行到循环语句中的break语句,就会从循环while退出。
break是非常常用的。
函数中的break和return:
return只能用在函数里面,表示从函数中返回。
return语句表示从函数中返回,它是不能用在函数外边的。
但是在函数中的循环体内的代码,使用return和break都可以从循环体中跳出。但是break只是跳出循环,如果循环后面有代码,还是会执行的。
return表示会从函数里面立即返回,函数体里的任何代码都不执行了。
continue语句:
break是立即跳出循环。以后的循环就不执行了。
有的时候,我们循环体内的代码在发现某个条件满足的时候,不是要终止整个循环,而是只结束当前这一轮循环,后面还要继续循环的执行。
while True:command = input("请输入命令:")if command == 'exit':breakif command == 'cont':continueprint(f'输入的命令是{command}')print('程序结束')

当输入cont的时候,就执行continue语句,是结束本次循环。不打印这个命令的那条语句,但还是让用户继续输入下一个命令。
列表推导式:
我们经常需要这样处理一个列表,把列表里的每个元素,经过相同的处理,生成另一个列表。
list1 = [1,2,3,4,5,6]
list2 = [num**2 for num in list1]print(list2)

那这种写法,通常叫做列表推导式。
这个是经常使用到的列表推导式。这样写就比较省事。
循环嵌套:
这是典型的 2个列表元素两两组合的问题:
list1 = ['关羽','张飞','赵云','马超','黄忠']
list2 = ['典韦','许褚','张辽','夏侯惇','夏侯渊']for member1 in list1:for member2 in list2:print(f'{member1} 大战 {member2}')
需要使用到循环的嵌套。
所谓的循环的嵌套,就是循环中还有循环。
内部的代码都要执行完,才能执行外部的循环代码。
相关文章:
Python学习基础笔记六十八——循环
循环是编程语言常见的流程控制。 Python语句要让计算机反复地做一些事情,就要用到循环语句。 有While和for循环。 while循环: command input("请输入命令:") while command ! exit:print(f输入的命令是{command})command input("请输…...
部署k8s dashboard(这里使用Kubepi)
9. 部署k8s dashboard(这里使用Kubepi) Kubepi是一个简单高效的k8s集群图形化管理工具,方便日常管理K8S集群,高效快速的查询日志定位问题的工具 部署KubePI(随便在哪个节点部署,我这里在主节点部署&#…...
Java Lambda表达式的使用
我们了解了 java Lambda 的概念并可以在匿名类的场合使用 Lambda 语法进行简单替换。本节主要介绍在 Java 中如何使用 Lambda 表达式。 作为参数使用Lambda表达式 Lambda 表达式一种常见的用途就是作为参数传递给方法,这需要声明参数的类型声明为函数式接口类型。…...
【初始C语言8】详细讲解初阶结构体的知识
前言 💓作者简介: 加油,旭杏,目前大二,正在学习C,数据结构等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏…...
<C++> IO流
C语言的输入与输出 在C语言当中,我们使用最频繁的输入输出方式就是scanf与printf: scanf: 从标准输入设备(键盘)读取数据,并将读取到的值存放到某一指定变量当中。printf: 将指定的数据输出到…...
基于单目相机的2D测量(工件尺寸和物体尺寸)
目录 1.简介 2.基于单目相机的2D测量 2.1 想法: 2.2 代码思路 2.2 主函数部分 1.简介 基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。 工业制造:在工业制造过程中,精确测量是确保产品质量和一致性的关键。基于单目相机的2…...
23面向对象案例1
目录 1、计算连续表达式的一个过程 2、优化后的代码 为什么不能return resultn? 3、用面向对象的方法可以解决冗余的问题,但是还是不能解决result的值可以被随意修改的问题 4、解决不能被随意修改的问题,可以将类属性改成私有变量吗&…...
go语言基础之常量与itoa
视频学习地址:Go零基础入门_在线视频教程-CSDN程序员研修院 一. 常量 定义:常量是一个简单值的标识符,在程序运行时,不会被修改的量。注意:常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数…...
民宿酒店订房房态商城小程序的作用是什么
外出旅游出差,酒店民宿总是很好的选择,随着经济复苏,各地旅游及外出办公人次增多,酒店成绩随之增加,市场呈现多品牌酒店经营形式。 区别于以前,如今互联网深入各个行业,酒店经营也面临着困境。…...
acwing算法基础之数据结构--栈和队列
目录 1 知识点2 模板 1 知识点 栈:先进后出。先进的就是栈底,后进的就是栈顶。后进先出嘛,所以在栈顶弹出元素。 队列:先进先出。先进的就是队头,后进的就是队尾。先进先出嘛,所以在队头弹出元素。 单调…...
关于导出的Excel文件的本质
上篇文章中提到关于xlsx改造冻结窗格的代码,我是怎么知道要加pane的呢,加下来就把我的心路历程记录一下。 我改造之前也是没有头绪的,我网上查了很多,只告诉我如何使用,但源码里没有针对!freeze的处理,所以…...
Rust中FnOnce如何传递给一个约束Fn的回调
Rust中FnOnce如何传递给一个约束Fn的回调 下面的代码,set_cb(func);会报错,如何包装能够做到这样的效果: fn set_cb<F: Fn() static>(handler: F) {handler(); }fn main() {let join_handle std::thread::spawn(|| {});let func |…...
【JUC】线程通信与等待唤醒机制
文章目录 1. 线程通信2. Object类中的wait和notify方法实现等待和唤醒3. Condition接口中的await和signal方法实现等待和唤醒4. LockSupport实现等待和唤醒4.1 优点 1. 线程通信 多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相…...
C#面对对象(英雄联盟人物管理系统)
目录 英雄信息类 因为要在两个窗体里面调用字典,所以要写两个类来构建全局变量 添加功能 查询功能 英雄信息类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WindowsFormsApp…...
2023年中国分布式光纤传感产量、需求量及行业市场规模分析[图]
分布式光纤传感器中的光纤能够集传感、传输功能于一体,能够完成在整条光纤长度上环境参量的空间、时间多维连续测量,具有结构简单、易于布设、性价比高、易实现长距离等独特优点,常用的分布式光纤传感器有光时域反射仪、布里渊分析仪、喇曼反…...
B2R Raven: 2靶机渗透
B2R Raven: 2靶机渗透 视频参考:ajest :https://www.zhihu.com/zvideo/1547357583714775040?utm_id0 原文参考:ajest :https://zhuanlan.zhihu.com/p/270343652 文章目录 B2R Raven: 2靶机渗透1 启动靶机,查看后网卡…...
SpringBoot-黑马程序员-学习笔记(六)
目录 76.常用计量单位使用 77.bean属性校验 81.测试表现层 82.发送虚拟请求 94.springboot读写redis的客户端 100.ElasticSearch(简称ES) 一个分布式全文搜索引擎 76.常用计量单位使用 Data Component ConfigurationProperties(prefix "serve…...
unity2022版本 实现手机虚拟操作杆
简介 在许多移动游戏中,虚拟操纵杆是一个重要的用户界面元素,用于控制角色或物体的移动。本文将介绍如何在Unity中实现虚拟操纵杆,提供了一段用于移动控制的代码。我们将讨论不同类型的虚拟操纵杆,如固定和跟随,以及如…...
『GitHub Actions』部署静态博客指南
前言 之前博主是使用的 Jenkins 实现 vuepress 博客的自动部署与持续交付,但是因为现在迁移服务器到海外,并且服务器配置降低。现在经常出现服务器的 Jenkins 构建过程中 CPU 占用率过高,导致服务器卡死 然后我想的话既然只是部署静态博客&…...
WPF Datagrid Header数据绑定,表头复选框实现全选、全否、部分选中,根据条目动态变化
制作一个根表头为CheckBox可全选、全不选的列表,且可根据条目自动调整CheckBox的状态(选中、不选、部分选中)。 本来是想用DataGrid做一个CheckBox的列用于勾选其中的某些行,当时做出来之后想着添加一个全选、全否的功能。做两个…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
