当前位置: 首页 > article >正文

第8章 流程控制-8.3 循环结构

循环结构就是让程序不断地重复执行同一段代码。Python中的循环结构有3种分别是while循环、for循环和循环嵌套。8.3.1 while循环while循环可以通过while语句和while…else语句实现。1.while语句while语句首先会判断其条件表达式是否成立如果条件表达式成立则执行循环体中的代码当执行完毕后再重新判断条件表达式的是否成立如仍然成立则继续重新执行循环体中的代码如此循环直到条件表达式不成立才终止循环最后执行除while语句外的其它代码。while语句的执行流程如图8-4所示。图8-4 while循环while语句的语法格式如下while 条件表达式 代码块该语法格式中的“条件表达式”可以是一个单一的值或者变量也可以是由运算符组成的复杂语句具体形式不限只要能得到一个值用于判断条件表达式是否成立即可“代码块”指的是缩进格式相同的多行代码且在循环结构中其又称为循环体。注意while语句后的冒号不要忘记书写。示例代码如下# 资源包\Code\chapter8\8.3\0808.py num 0 while num 5: print(f第一次输出{num}) num 1 print(f上述while循环执行了{num}次)2.while…else语句while…else语句首先会判断其条件表达式是否成立如果条件表达式成立则执行循环体中的代码否则终止循环并执行else语句后的代码最后执行除while语句外的其它代码。while…else语句的语法格式如下while 条件表达式 代码块1循环体 else: 代码块2该语法格式中的“条件表达式”可以是一个单一的值或者变量也可以是由运算符组成的复杂语句具体形式不限只要能得到一个值用于判断条件表达式是否成立即可“代码块”指的是缩进格式相同的多行代码。注意while语句后的冒号不要忘记书写。示例代码如下# 资源包\Code\chapter8\8.3\0809.py num 0 while num 5: print(f第一次输出{num}) num 1 else: print(while循环执行结束) print(f上述while循环执行了{num}次)8.3.2 for循环在Python中虽然for循环与while循环都是循环结构但是其应用场景是不一样的for循环主要用于遍历字符串、列表、元组、字典或集合并逐个获取其中的元素。for循环可以通过使用for语句和for…else语句实现。1.for语句for语句会通过不断地循环查找字符串、列表、元组、字典或集合中是否存在元素如果存在则继续循环否则终止循环最后执行除for语句外的其它代码。for语句的执行流程如图8-5所示。图8-5 for循环for语句的语法格式如下for 迭代变量 in 字符串|列表|元组|字典|集合 代码块该语法格式中的“迭代变量”用于存放从字符串、列表、元组、字典或集合中读取的元素“代码块”指的是具有相同缩进格式的多行代码。注意for语句后的冒号不要忘记书写。示例代码如下# 资源包\Code\chapter8\8.3\0810.py lt [1, 2, 3, 4, 5, 6, 7] for val in lt: print(val) print(上述for循环执行结束)2.for…else语句for…else语句会通过不断地循环查找字符串、列表、元组、字典或集合中是否存在元素如果存在则继续循环否则终止循环并执行else语句后的代码最后执行除for语句外的其它代码。for…else语句的语法格式如下for 迭代变量 in 字符串|列表|元组|字典|集合 代码块1 else: 代码块2该语法格式中的“迭代变量”用于存放从字符串、列表、元组、字典或集合中读取的元素“代码块”指的是具有相同缩进格式的多行代码。注意for语句后的冒号不要忘记书写。需要注意的是只有当for循环正常完成时才会执行else分支一旦强行中止循环则不会执行else分支。示例代码如下# 资源包\Code\chapter8\8.3\0811.py # 正常执行循环 lt [1, 2, 3, 4, 5, 6, 7] for val in lt: print(val) else: print(for循环执行结束) print(上述for循环正常执行结束) print() # 强行中止循环 lt [1, 2, 3, 4, 5, 6, 7] for val in lt: if val 3: break print(val) else: print(for循环执行结束) print(上述for循环强行中止循环else语句后的代码不执行)8.3.3 循环嵌套在实际开发中有很多需求是while循环或for循环无法单独完成的所以可以通过使用循环嵌套来实现更加复杂的功能。循环嵌套指的是多种循环之间的嵌套使用例如while循环里面还有while循环for循环里面还有for循环甚至while循环中有for循环或者for循环中有while循环。当两个或两个以上的循环结构相互嵌套时位于外层的循环结构称为外层循环或外循环位于内层的循环结构称为内层循环或内循环。循环嵌套的执行流程分为4步如图8-6所示。图8-6 循环嵌套第1步当外层循环条件表达式为真时则执行外层循环体第2步外层循环体中可能包含代码块和内层循环当内层循环条件表达式为真时,则执行此层循环中的代码块直到内层循环条件表达式为假时跳出内层循环第3步如果此时外层循环条件表达式仍为真则返回第2步继续执行外层循环体直到外层循环条件表达式为假第4步当内层循环条件表达式为假时且外层循环条件表达式也为假则整个循环嵌套才算全部执行完毕。示例代码如下# 资源包\Code\chapter8\8.3\0812.py num 0 lt [1, 2, 3] while num 2: for val in lt: print(val) else: num 1 print(ffor循环第{num}次执行) else: print(while循环执行结束) print(f列表lt遍历了{num}次)8.3.4 循环控制语句在执行while循环或for循环时只要循环条件成立程序就会一直执行循环体中的代码。但在某些功能场景中需要在循环结束前就强制结束。为此Python提供了2种强制结束循环的方法分别是break语句和continue语句。1.break语句break语句会立即终止所在循环体的执行跳出当前所在的循环结构。注意break语句不会作用于除所在循环结构之外的循环结构。示例代码如下# 资源包\Code\chapter8\8.3\0813.py # 该程序用于打印输出列表中的元素直到值等于5时终止并循环输出处理后的列表两遍 num 0 lt [1, 2, 3, 4, 5, 6, 7, 8, 9] # while循环共执行2次 while num 2: new_lt [] for val in lt: if val 5: # 当值等于5时终止执行当前循环体并跳出当前的循环结构 break new_lt.append(val) num 1 print(new_lt)2.continue语句continue语句会终止执行所在循环体的本次循环中剩下的代码直接从下一次循环继续执行。示例代码如下# 资源包\Code\chapter8\8.3\0814.py # 该程序用于将列表中的元素5剔除并循环输出处理后的列表两遍 num 0 lt [1, 2, 3, 4, 5, 6, 7, 8, 9] # while循环共执行2次 while num 2: new_lt [] # for循环共执行9次 for val in lt: if val 5: # 当值等于5时终止执行当前循环体的本次循环中剩下的代码即new_lt.append(val) continue new_lt.append(val) num 1 print(new_lt)

相关文章:

第8章 流程控制-8.3 循环结构

循环结构就是让程序不断地重复执行同一段代码。Python中的循环结构有3种,分别是while循环、for循环和循环嵌套。8.3.1 while循环while循环可以通过while语句和while…else语句实现。1.while语句while语句首先会判断其条件表达式是否成立,如果条件表达式成…...

BiliTools:重构B站资源管理的跨平台工具箱

BiliTools:重构B站资源管理的跨平台工具箱 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 价值定位&…...

6步构建企业级远程桌面系统:基于UltraVNC的完整部署指南

6步构建企业级远程桌面系统:基于UltraVNC的完整部署指南 【免费下载链接】UltraVNC 👁️ UltraVNC Server, UltraVNC Viewer, UltraVNC Repeater and UltraVNC SC | Official repository: https://github.com/ultravnc/UltraVNC 项目地址: https://git…...

5分钟解锁你的首个Gemini AI智能体:全栈开发终极指南

5分钟解锁你的首个Gemini AI智能体:全栈开发终极指南 【免费下载链接】gemini-fullstack-langgraph-quickstart Get started with building Fullstack Agents using Gemini 2.5 and LangGraph 项目地址: https://gitcode.com/gh_mirrors/ge/gemini-fullstack-lang…...

Element Plus访问提速实战:突破跨境网络限制的三大解决方案

Element Plus访问提速实战:突破跨境网络限制的三大解决方案 【免费下载链接】element-plus 🎉 A Vue.js 3 UI Library made by Element team 项目地址: https://gitcode.com/GitHub_Trending/el/element-plus Element Plus作为Vue 3生态中最受欢迎…...

GTE-Base-ZH赋能Java应用:SpringBoot集成与语义搜索实战

GTE-Base-ZH赋能Java应用:SpringBoot集成与语义搜索实战 最近在做一个电商后台的搜索功能升级,用户反馈说,用关键词搜商品经常找不到想要的东西。比如用户搜“适合夏天穿的轻薄外套”,传统的搜索可能只匹配到“外套”&#xff0c…...

收藏!Java后端裁员潮下,程序员(小白必看)靠大模型破局翻身

凌晨一点半,手机屏幕突然亮起,是做Java后端开发的发小发来的消息,字里行间全是慌乱与不甘:“刚收到公司裁员通知,名单已经定死了,我真的懵了——部门里干了五年的资深老程都没保住,我这三年经验…...

如何用DoubleQoLMod在30分钟内让你的工业帝国效率翻倍?

如何用DoubleQoLMod在30分钟内让你的工业帝国效率翻倍? 【免费下载链接】DoubleQoLMod-zh 项目地址: https://gitcode.com/gh_mirrors/do/DoubleQoLMod-zh 想象一下,你的工厂正在全速运转,但资源采集却像蜗牛一样缓慢;你的…...

多屏时代的窗口效率引擎:Rectangle智能布局解决方案

多屏时代的窗口效率引擎:Rectangle智能布局解决方案 【免费下载链接】Rectangle Move and resize windows on macOS with keyboard shortcuts and snap areas 项目地址: https://gitcode.com/gh_mirrors/re/Rectangle 场景痛点:当混乱成为工作流的…...

如何高效获取阿里云盘Refresh Token:开源工具实战指南

如何高效获取阿里云盘Refresh Token:开源工具实战指南 【免费下载链接】aliyundriver-refresh-token QR Code扫码获取阿里云盘refresh token For Web 项目地址: https://gitcode.com/gh_mirrors/al/aliyundriver-refresh-token 在云存储自动化操作中&#xf…...

EF Core 10向量搜索不是“加个NuGet包”那么简单:一位资深架构师用12小时重构遗留系统的真实复盘

第一章:EF Core 10向量搜索扩展的架构定位与演进本质EF Core 10 向量搜索扩展并非孤立的功能补丁,而是微软在数据访问层深度整合 AI 原生能力的战略锚点。它标志着 ORM 从“关系映射”范式向“语义感知查询”范式的结构性跃迁——将向量计算能力下沉至查…...

013.定时器之系统Tick实现|千篇笔记实现嵌入式全栈/裸机篇

⚠️裸机仓库:https://gitee.com/simonchina_carel_li/mini2440-bare-metal.git ⚠️Tag: 13-sys-tick 1. 为什么要系统Tick? 在前面的SDRAM测试程序中(), 我们有这样的部分, // -- TODO: 如果你有定时器…...

Java虚拟线程落地避坑指南(生产环境血泪总结:从Spring Boot 3.3集成到Project Loom异常传播链断裂修复)

第一章:Java 25虚拟线程核心原理与高并发演进全景Java 25正式将虚拟线程(Virtual Threads)从预览特性转为标准特性,标志着JVM并发模型进入轻量级线程时代。虚拟线程由JVM在用户态调度,底层复用有限的平台线程&#xff…...

012.整体框架适配SDRAM|千篇笔记实现嵌入式全栈/裸机篇

⚠️裸机仓库:https://gitee.com/simonchina_carel_li/mini2440-bare-metal.git ⚠️Tag: 11-sdram-apply 1. 这次要做什么? 我们已经完成了sdram的初始化,现在sdram已经可以使用了 我们之前的固件,栈空间是跑在SOC内置的4KB的S…...

粉紫系超人气月兔铃仙救

1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...

零代码实现企业级打印模板设计:vue-plugin-hiprint全攻略

零代码实现企业级打印模板设计:vue-plugin-hiprint全攻略 【免费下载链接】vue-plugin-hiprint hiprint for Vue2/Vue3 ⚡打印、打印设计、可视化设计器、报表设计、元素编辑、可视化打印编辑 项目地址: https://gitcode.com/gh_mirrors/vu/vue-plugin-hiprint …...

ESXi 自动加入 vCenter:Kickstart 脚本高效部署指南

在虚拟化集群部署中,手动将 ESXi 主机加入 vCenter Server 不仅繁琐,还容易出现配置失误,尤其适用于大规模集群搭建场景。本教程将介绍一种基于 Pyvmomi 工具的优化方案,无需依赖外部复杂环境,直接通过 ESXi Kickstart…...

VCF 私有 AI 服务(PAIS)自签名 TLS 证书配置避坑指南

在实验室或概念验证环境中,自签名 TLS 证书是 VCF 私有 AI 服务(PAIS)部署的常用选择,但常因底层库验证机制差异引发各类报错。本文针对 PAIS 部署中两类高频证书问题 ——API 容器启动失败与 Harbor 模型推送报错,拆解报错根源,提…...

Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接父

一、环境准备 Free Spire.Doc for Python 是免费 Python 文档处理库,无需依赖 Microsoft Word,支持 Word 文档的创建、编辑、转换等操作,其中内置的 Markdown 解析能力,能高效实现 Markdown 到 Doc/Docx 格式的转换,且…...

Accio Work 全面解析:从免费白嫖到2000积分时代

Accio Work 全面解析:从免费白嫖到2000积分时代阿里国际推出的企业级 AI Agent 平台,能自主帮你做生意,但它真的免费吗?一、什么是 Accio Work?2026年3月24日,阿里国际在海外正式发布了一款名为 Accio Work…...

被遗忘的宝藏:深度挖掘一款停更20年的神器——拖把更名器

在软件的海洋中,有这样一类特殊的存在:它们并非出自大公司之手,也没有大规模的商业推广,却凭借着优秀的设计和实用的功能,在用户中口口相传。 它们可能已经停更多年,在主流软件平台上难觅踪迹,但…...

从手写试卷到智能评分:OCRAutoScore如何重塑教育评估体验

从手写试卷到智能评分:OCRAutoScore如何重塑教育评估体验 【免费下载链接】OCRAutoScore OCR自动化阅卷项目 项目地址: https://gitcode.com/gh_mirrors/oc/OCRAutoScore 作为一名教育工作者,你是否曾为堆积如山的试卷批改而苦恼?每学…...

【仅限首批200位工程师开放】工业PHP网关配置诊断工具包(含自动巡检脚本+配置熵值评分模型+整改优先级热力图)

第一章:工业PHP网关配置的演进与工程挑战工业级PHP网关已从早期的简单NginxPHP-FPM反向代理,演进为集路由分发、协议转换、熔断限流、可观测性注入于一体的复合中间件层。这一演进在提升系统弹性的同时,也带来了配置复杂度指数级上升、多环境…...

Spring WebFlux vs 虚拟线程:同一微服务压测对比(RPS 22,400 vs 38,900),为什么你该立刻停用响应式编程?

第一章:Java 25虚拟线程演进全景与高并发架构新范式Java 25正式将虚拟线程(Virtual Threads)从预览特性转为标准特性,并深度整合至java.util.concurrent、java.net和java.io等核心模块,标志着JVM并发模型从“OS线程绑定…...

为什么92%的农业SaaS平台在PHP可视化环节失败?资深农科院IT总监深度复盘3大技术黑洞

第一章:农业SaaS平台PHP可视化失败的全局图谱农业SaaS平台在落地过程中,常将数据可视化模块交由PHP后端直接渲染图表,却普遍遭遇响应延迟、内存溢出、图表错位及跨设备兼容性断裂等系统性失败。这些失败并非孤立缺陷,而是技术选型…...

从零入门性能测试:理论+JMETER实操,看完就能上手怯

一、环境准备 Free Spire.Doc for Python 是免费 Python 文档处理库,无需依赖 Microsoft Word,支持 Word 文档的创建、编辑、转换等操作,其中内置的 Markdown 解析能力,能高效实现 Markdown 到 Doc/Docx 格式的转换,且…...

虚拟线程性能拐点在哪?JVM 25.0.1+GraalVM+Linux eBPF监控实录,8大生产环境反模式曝光,现在不看下周就踩坑!

第一章:虚拟线程性能拐点的理论边界与工程定义虚拟线程(Virtual Thread)作为 JDK 21 引入的轻量级并发抽象,其性能优势并非在所有负载场景下线性增长。当调度密度、I/O 阻塞率与平台线程(Platform Thread)资…...

分布式训练有望解决人工智能的能耗难题

人工智能正面临着巨大的能源消耗挑战。这种持续增长的能源需求体现在支撑AI繁荣的数据中心产生的巨大碳足迹,以及前沿AI模型训练所产生的碳排放量随时间稳步增加。难怪大型科技公司开始青睐核能,设想一个由可靠、无碳能源支撑的未来。但是,虽…...

群晖Video Station元数据插件全攻略:从部署到优化的完整指南

群晖Video Station元数据插件全攻略:从部署到优化的完整指南 【免费下载链接】syno-videoinfo-plugin A simple web scraping plugin for Synology Video Station 项目地址: https://gitcode.com/gh_mirrors/sy/syno-videoinfo-plugin 元数据插件是群晖Video…...

G-Helper技术架构深度解析:华硕笔记本底层硬件控制实现机制

G-Helper技术架构深度解析:华硕笔记本底层硬件控制实现机制 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...