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的列用于勾选其中的某些行,当时做出来之后想着添加一个全选、全否的功能。做两个…...
ARMv8汇编指令实战解析:adrp、adr与adr_l在Linux内核启动中的应用
1. ARMv8寻址指令家族概览 在ARMv8架构中,adrp、adr和adr_l这三个指令堪称地址计算的"三剑客"。它们虽然名字相似,但各自有着独特的设计哲学和应用场景。就像搬家时选择不同的交通工具——adr是短途搬运的小推车,adrp是能承载重物的…...
Windows 11 + CUDA 11.7 环境下,TensorRT 8.5.2.2 保姆级安装与配置避坑指南
Windows 11 CUDA 11.7 环境下 TensorRT 8.5.2.2 终极安装指南 刚接触深度学习推理优化的开发者,往往会在环境配置阶段耗费大量时间。TensorRT作为NVIDIA官方推出的高性能推理库,能够显著提升模型在NVIDIA GPU上的运行效率。本文将手把手带你完成Windows…...
AI读脸术多国面孔适配:跨种族识别优化部署实战
AI读脸术多国面孔适配:跨种族识别优化部署实战 1. 引言 你有没有遇到过这样的情况:一个在亚洲人脸识别上表现不错的AI模型,拿到一张欧洲人或非洲人的照片时,识别结果就开始"犯迷糊"了?性别判断出错&#x…...
代码生成神器实测:Yi-Coder-1.5B在Ollama上的真实体验与效果
代码生成神器实测:Yi-Coder-1.5B在Ollama上的真实体验与效果 1. 开箱体验:Yi-Coder-1.5B初印象 1.1 为什么选择Yi-Coder-1.5B 作为一名经常需要编写各种编程语言的开发者,我一直在寻找一个既轻量又强大的代码生成工具。Yi-Coder-1.5B以其1…...
TinyCheck开发指南:从源码结构到核心类设计,理解网络安全检测平台架构
TinyCheck开发指南:从源码结构到核心类设计,理解网络安全检测平台架构 【免费下载链接】TinyCheck TinyCheck allows you to easily capture network communications from a smartphone or any device which can be associated to a Wi-Fi access point …...
别再为PDF表格头疼了!用Nougat+LangChain搞定RAG系统里的表格问答(附完整代码)
突破PDF表格解析瓶颈:Nougat与LangChain构建智能问答系统实战 每次打开满是表格的学术论文PDF时,你是否也经历过这样的挫败感?传统OCR工具要么把跨页表格拆得七零八落,要么将复杂的LaTeX公式识别成乱码,更别提准确关联…...
从SENet到MaskNet:聊聊推荐系统里那些‘注意力’模块,到底谁在真正帮你提效?
从SENet到MaskNet:动态特征加权的技术演进与实战选型指南 在推荐系统的演进历程中,特征交互与动态加权始终是提升模型效果的核心突破口。2017年提出的SENet(Squeeze-and-Excitation Network)首次将通道注意力机制引入计算机视觉领…...
Zotero插件版本兼容性问题深度解析:从冲突到解决方案
Zotero插件版本兼容性问题深度解析:从冲突到解决方案 【免费下载链接】zotero-format-metadata Linter for Zotero. An addon for Zotero to format item metadata. Shortcut to set title rich text; set journal abbreviations, university places, and item lang…...
基于模拟退火算法优化的最小二乘支持向量机(SA-LSSVM)数据分类预测及Matlab代码实现...
基于模拟退火算法优化最小二乘支持向量机(SA-LSSVM)的数据分类预测 SA-LSSVM数据分类 matlab代码,采用交叉验证抑制过拟合问题注:采用交叉验证在一定程度上抑制了过拟合问题。 注:要求 Matlab 2018B 版本及以上最近在搞分类预测的项目&#x…...
PCA9685嵌入式C++驱动库:高效I²C PWM控制方案
1. PCA9685 LED驱动库技术解析:面向嵌入式C的高效IC PWM控制方案1.1 芯片级原理与工程定位PCA9685是NXP(原Philips)推出的16通道12位PWM LED驱动器,采用标准IC(TWI)接口通信,支持最高1.6 MHz时钟…...
