当前位置: 首页 > 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…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...