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

Python从入门到高手4.2节-掌握循环控制语句

目录

4.2.1 理解循环控制

4.2.2 for循环结构

4.2.3 循环结构的else语句

4.2.4 while循环结构

4.2.5 循环结构可以嵌套

4.2.6 国庆节吃好玩好


4.2.1 理解循环控制

我们先来搞清楚循环的含义。以下内容引自汉语词典:

循环意指往复回旋,指事物周而复始地运动或变化,或反复地连续做某事

那么,放到编程语言中进行类比,则很容易理解循环控制: 通过某些指令来控制程序反复地执行。通过控制程序指令反复地执行,可将程序员从繁琐的代码编写工作中解放出来。同学们先思考下面这个问题:

计算1到10之间的所有自然数的和

乍看是一个很简单的问题,要解决这个问题,只需将1到10之间的所有自然数罗列出来,然后再直接相加即可:

sum = 1+2+3+4+5+6+7+8+9+10

但如果把问题改成“计算1到100000之间的所有自然数的和”,该怎么编写程序代码?通过手写的方式,逐数字的进行相加是非常低效的。对于这类问题,编程语言中的循环控制可以提供完美的解决方案。

4.2.2 for循环结构

在Python中通过for与while关键字来定义循环结构,循环结构中的else语句用来定义循环正常退出时所执行的操作。

同学们可以在交互模式中查找for,while等关键字的定义与用法,要养成在交互模式中进行查找的良好习惯。例如查找for关键字的定义及用法:help("for")。

for循环的语法结构:

for target_list in expression_list:pass
else:pass

target_list表示目标值列表,expression_list表示表达式列表,循环中的else语句用来定义循环正常退出时所执行的操作。在for循环结构中,会逐一迭代出表达式列表中的值,然后将值赋值给target_list所代表的变量。

代码实例:

for number in 1,2,3,4,5:print(number)"""
程序输出为:1
2
3
4
5
"""

代码中的for循环会迭代表达式列表中的值,然后将迭代出的值赋值给变量number。表达式列表中的值为(1,2,3,4,5), 集合中有5个值,所以for循环一共迭代了5次,每次都将迭代得到的值赋值给了变量number。比如第一次迭代出的值为1,然后赋值给变量number,第二次迭代出的值为2,同样赋值给变量number,以此类推。

以逗号分隔的表达式其实是Python中的元组,在后面介绍数据类型时,会对元组类型进行详细讲解

4.2.3 循环结构的else语句

循环中的else语句不是必须的,如需定义循环正常退出时所执行的收尾操作,那么需要在for循环结构中加一个else语句。

for number in 1,2,3,4,5:print(number)
else:print("for循环正常退出")"""
程序输出为:1
2
3
4
5
for循环正常退出
"""

所谓的循环非正常退出,是指在循环中执行了break语句,也即,只要在循环体中执行了break, 就是循环的非正常退出。

break语句只能用于循环结构中,如果用在其它的地方,Python会抛出语法错误的异常信息。

代码实例:

for number in 1,2,3,4,5:print(number)# 如果当前number指向的值大于3,就执行break退出循环 if number > 3:break
else:# 如果for循环非正常退出# 就不会执行else语句下面的代码print("for循环正常退出")"""
程序输出为:
1
2
3
4
"""

4.2.4 while循环结构

先来看下while循环的语法结构:

while expression:pass
else:pass

expression为条件表达式,当表达式的值为真值时,会执行冒号下方的代码。while中的else同for循环中的else一样,用来定义循环正常退出时所执行的操作。在while循环中同样可以执行break来退出循环。

代码实例:

while 0:print("这行代码永远不会执行")
while "":print("这行代码永远不会执行")

while中的表达式为0,  0值为假值,所以不会执行while循环中的print函数。

在迄今学过的内容中,0值和空值都为假值。空字符串是空值,自然也是假值

代码实例:

x = 3
y = 3
while x+y > 0:# 先取出变量x指向的值,然后与1进行相减# 最后将相减的值再赋值给变量x,以此实现了自减x = x-1y = y-1print("x+y=", x+y)"""
程序输出为:x+y=4
x+y=2
x+y=0
"""

代码讲解:

x与y的初始值都为3,x+y的值为6,所以x+y > 0的值为真值。在while循环中不断将x与y的值减-1,当x与y的值都为0时,x+y=0,那么表达式x+y > 0的值为假值,所以不会运行循环体中的代码。

4.2.5 循环结构可以嵌套

循环结构同条件控制结构一样,也可以嵌套。同样地,在进行嵌套时要注意代码缩进,同时嵌套的深度不宜过深,否则会导致代码的可读性变差,代码难以维护。以下是一个代码实例, 计算1到10之间的所有合数的和:

# 定义变量sum_of_numbers用来保存所有合数的和
sum_of_numbers = 0
# 合数指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数
# 所以首先排除1和2
number = 3while number <=10:# 通过for循环和range来遍历从2到number之间的所有自然数for _ in range(2, number):# % 是Python中的求余计算符号if number % _ == 0:# number能被其他数整除时,余数为0# 如果余数为0,说明为合数sum_of_numbers = sum_of_numbers + numberbreak    # 不断进行自加,当number指向的值大于10时,会退出循环number = number +1
else:print(sum_of_numbers)

在上文的代码实例中,在while循环中嵌套了for循环,同样可以在while中嵌套while循环,在for循环中嵌套while循环,for循环。同学们可将上文中的代码实例全部改成for循环结构,以比较while循环与for循环的使用区别。

4.2.6 国庆节吃好玩好

跟薯条老师学后端开发,高级爬虫(JS逆向+安卓逆向),数据分析,大数据开发,量化交易,以及机器学习+深度学习算法。坚定自己的学习目标,保持学习的热情,那你成为高手只是时间问题。

薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。想系统学习Python和Java的同学,可以移步薯条老师的个人技术博客:薯条老师的个人技术博客icon-default.png?t=O83Ahttp://www.chipscoco.com/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。

 

相关文章:

Python从入门到高手4.2节-掌握循环控制语句

目录 4.2.1 理解循环控制 4.2.2 for循环结构 4.2.3 循环结构的else语句 4.2.4 while循环结构 4.2.5 循环结构可以嵌套 4.2.6 国庆节吃好玩好 4.2.1 理解循环控制 我们先来搞清楚循环的含义。以下内容引自汉语词典: 循环意指往复回旋&#xff0c;指事物周而复始地运动或变…...

CSS 中的overscroll-behavior属性

overscroll-behavior 是 CSS 中的一个属性&#xff0c;它用于控制元素在发生滚动时&#xff0c;当滚动范围超出其边界时的行为。这个属性对于改善用户体验特别有用&#xff0c;尤其是在移动端设备上&#xff0c;当用户尝试滚动一个已经达到滚动极限的元素时&#xff0c;可以通过…...

GPT对话知识库——在STM32的平台下,通过SPI读取和写入Flash的步骤。

目录 1&#xff0c;问&#xff1a; 1&#xff0c;答&#xff1a; 步骤概述 步骤 1&#xff1a;SPI 初始化 步骤 2&#xff1a;Flash 初始化&#xff08;可选&#xff09; 步骤 3&#xff1a;发送读取命令 示例&#xff1a;发送读取数据命令 步骤 4&#xff1a;读取数据…...

Pytorch基本知识

model.state_dict()、model.parameters()和model.named_parameters()的区别 parameters()只包含模块的参数,即weight和bias(包括BN的)。 named_parameters()返回包含模块名和模块的参数的列表,列表的每个元素均是包含layer name和layer param的元组。layer param就是param…...

vue3使用Teleport 控制台报警告:Invalid Teleport target on mount: null (object)

Failed to locate Teleport target with selector “.demon”. Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree main.…...

使用产品前的环境搭建

对于想学习编程的朋友们&#xff0c;使用本产品解决日常功能需求的同时会对自己编程能力具有较大帮助和提升。 目录 环境搭建 前言&#xff1a; 安装python 安装vscode 下载安装Anaconda 通过conda配置python环境 创建虚拟环境 查看环境是否创建成功 激活环境 安装pyt…...

JAVA基础语法 day07

一、final关键字 1.1final的基础知识 用来修饰类&#xff0c;方法&#xff0c;变量 final修饰类&#xff0c;该类被称为终极类&#xff0c;不能被继承了 final修饰方法&#xff0c;该方法称为终极方法&#xff0c;不能被重写了 final修饰变量&#xff0c;该变量仅能被赋值…...

ZLMediaKit编译运行

ZLMediaKit-github官网 快速开始 代码依赖与版权声明 MediaServer支持的HTTP MediaServer支持的HTTP HOOK API cd ZLMediaKit mkdir build cd build cmake … && make -j20 cd ZLMediaKit/release/linux/Debug ./MediaServer //./MediaServer -h 查看 //./MediaSe…...

AlmaLinux 9 安装mysql8.0.38

文件下载 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.39-linux-glibc2.12-x86_64.tar 选择合适系统版本 下载后解压 tar -xvf mysql-8.0.39-linux-glibc2.12-x86_64.tar解压后里面有三个文件夹 使用mysql-8.0.39-linux-glibc2.12-x86_64.tar.xz即可&#xff0c…...

NLP任务之文本分类(情感分析)

目录 1 加载预训练模型对应的分词器 2 加载数据集 3 数据预处理 4 构建数据加载器DataLoader 5 定义下游任务模型 6 测试代码 7 训练代码 #做&#xff08;中文与英文的&#xff09;分类任务&#xff0c;Bert模型比较合适&#xff0c;用cls向下游任务传输数…...

MIMO 2T4R BBU RHUB AAU

MIMO&#xff08;Multiple-Input Multiple-Output&#xff0c;多输入多输出&#xff09;是一种无线通信技术&#xff0c;它通过在发射端和接收端使用多个天线来提高数据传输速率和信号质量。"2T4R"是MIMO技术中的一种配置&#xff0c;其中"2T"代表有两个发…...

图说数集相等定义表明“R各元x的对应x+0.0001的全体=R“是几百年重大错误

黄小宁 设集A&#xff5b;x&#xff5d;表A各元均由x代表&#xff0c;&#xff5b;x&#xff5d;中变量x的变域是A。其余类推。因各数x可是数轴上点的坐标故x∈R变为实数yx1的几何意义可是&#xff1a;一维空间“管道”g内R轴上的质点x∈R(x是点的坐标)沿“管道”g平移变为点y…...

只出现一次的数字|||(考察点为位操作符)

目录 一题目&#xff1a; 二思路汇总&#xff1a; 三代码解答&#xff1a; 一题目&#xff1a; leetcode原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二思路汇总&#xff1a; 思路&#xff1a;如果直接对数组按位异或&#xff0c;那么最后得到的是a^b&a…...

PMP--三模--解题--81-90

文章目录 13.干系人管理--权力利益方格--基于干系人的职权级别&#xff08;权力&#xff09;、对项目成果的关心程度&#xff08;利益&#xff09;、对项目成果的影响能力&#xff08;影响&#xff09;&#xff0c;或改变项目计划或执行的能力&#xff0c;每一种方格都可用于对…...

脚本自动化创建AWS EC2实例+安装ElasticSearch和Kibana+集成OpenTelemetry监控

文章目录 为什么要通过脚本来部署服务器&#xff1f;EC2实例类型硬件选择实例类型的选择内存CPU存储架构操作系统最终的选择 其他配置安全组配置网络配置IAM RoleKey Pair内部域名 书写自动化脚本属性文件EBS配置文件创建EC2实例命令user data 文件OpenTelemetry监控 创建内部域…...

【设计模式-命令】

定义 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将请求封装为一个对象&#xff0c;从而使您能够使用不同的请求、排队请求或记录请求&#xff0c;并支持可撤销的操作。该模式通过将请求与其执行分离&#xff0c;使得请求者和接收者之间…...

【API安全】crAPI靶场全解

目录 BOLA Vulnerabilities Challenge 1 - Access details of another user’s vehicle Challenge 2 - Access mechanic reports of other users Broken User Authentication Challenge 3 - Reset the password of a different user Excessive Data Exposure Challenge …...

HCIP-HarmonyOS Application Developer 习题(四)

1、以下哪个Harmonyos的AI能力可以提供文档翻拍过程中的辅助增强功能? A.文档检测矫正 B.通用文字识别 C.分词 D.图像超分辨率 答案&#xff1a;A 分析&#xff1a;文档校正提供了文档翻拍过程的辅助增强功能&#xff0c;包含两个子功能&#xff1a; 文档检测&#xff1a;能够…...

【Python报错已解决】TypeError: ‘int‘ object is not subscriptable

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...

《OpenCV》—— 指纹验证

用两张指纹图片中的其中一张对其验证 完整代码 import cv2def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)def verification(src, model):sift cv2.SIFT_create()kp1, des1 sift.detectAndCompute(src, None)kp2, des2 sift.detectAndCompute(model, None)fl…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...