Python之循环语句

这是《Python入门经典以解决计算问题为导向的Python编程实践》中58-65的内容,主要将了while循环语句和for循环语句。

循环

  • 一、while循环语句
    • 语法:
    • 工作原理:
    • 案例解读
    • 要点
  • 二、for循环语句
    • 语法
    • 工作原理、
    • 案例:寻找完全数
  • 三、while语句和for语句的区别
  • 案例:对数字分类
  • 自测练习

在程序中,把重复称为“循环”。
在Python中,有两种不同风格的循环,分别是while语句和for语句

一、while循环语句

语法:

while 布尔表达式:循环体(被重复执行的代码块)

我们希望能够控制让指令重复执行的条件,在每次执行循环体时,就要先进行判断
利用布尔表达式进行判定,满足条件就重复执行指令,不满足时就停止执行。
如果布尔表达式在第一次判断时就是假的,那么循环体的代码将永远不会被执行。

工作原理:

  • ①进入while结构,开始第一次布尔表达式的判定
  • ②布尔表达式为真,执行对应的循环体。
  • ③第②步结束后,要进行下一次的布尔表达式判断
  • ④布尔表达式为真继续②-④的步骤;为假时,循环结束,执行while语句后面的代码。

在这里插入图片描述

案例解读

下面的代码是输出0-9的数字
在这里插入图片描述
第一行给x 赋值

第二行判断x是否小于10。因为要输出0-9,当x=10的是否就不需要输出了,所以判断条件为x<10。

第3-4行是循环体,这里也可以发现循环体使用了相同缩进。满足x<10时,输出x,再将x的值加1。这一步很重要,假如没有x+=1,那么x永远等于初始值0,一直满足条件x<10,这个循环就变成了死循环了,一直输出0。

第5行时和第2行缩进一致的,它是while语句结束后的代码,当循环结束后,就会执行这一句。

要点

使用while语句时一定要包含以下元素:

  • 变量有初始值,没有就要先赋值:如上面例子的第一句
  • 循环体中要有对变量值进行修改的代码,不然会导致死循环。

二、for循环语句

迭代器是与所有集合类型相关联的对象。集合包含与对象相关联的多个元素,如果一个变量是集合类型,那么它可以保存多个元素。可以使用for循环访问集合中的各个元素。

语法

for 循环变量 in 对象:循环体

工作原理、

循环时会把对象中的元素的值赋给循环变量,每轮循环中循环变量都会被赋予不同的元素。
执行相应的循环体代码,一次循环后循环变量被赋予下一个元素的值,再次循环。
当对象中的元素都给完后,循环就会结束。
在这里插入图片描述

案例:寻找完全数

完全数是一个整数,其因数的和(不包含本身的因数)加起来就是数字本身,如
6=1+2+3
28=1+2+4+7+14
因数的和比数字本身大的数称为丰沛数。因数的和比数字本身小的数称为为不足数。完全数还有其他一些有趣的属性。但在这个例子中,我们只是编写程序来将整数分为三类:完全数、丰沛数或者不足数。
1、判定是否为完全数
思路:获取一个整数n——求出所有的因数——将sum初始值设为0,和所有因数相加——将n和sum进行判断

n=int(input("输入一个整数"))
sum=0
//求所有因数
//所有因数相加
if sum==n:print("这是完全数")
else:print("这不是完全数")

2、如何得到所有因数的和
对于数N来说,因数是能够整除N的数字,即N除以一个数,余数为0,这个数就是N的余数。
另外,我们知道一个数N的因数范围是1-N(这个数本身)。
所以求一个数的所有因数,可以用循环语句,从1-N,一个个去判断余数是否为0,为0时就是因数。
是因数,就和sum相加。

for i in range(1,n):if n%i==0:sum+=i

这里使用的range(1,10),会得到1-9的数字,不包含10。如果想要得到a到b的数字,就可以用range(a,b+1)。因为后一个数值是不包括的。例如range(2,6)得到的是2,3,4,5

简单了解一下,后续再讲。
3、整合代码

n=int(input("输入一个整数"))
sum=0
for i in range(1,n):if n%i==0:sum+=i
if sum==n:print("这是完全数")
else:print("这不是完全数")

三、while语句和for语句的区别

while语句和for语句是可以相互转换的,他们之间也是有区别的。

#i不用赋初值,会被赋予被循环对象中的第一个元素
for i in range(1,n):  if n%i==0:sum+=i
#for循环不需要多一句改变循环变量的语句,会在下一次循环中自动赋予被循环对象的下一个语句。

可以转换成while语句,如下:

i=1  #while语句需要给变量赋初值
while i<10:if n%i==0:sum+=ii+=1   #while语句要改变循环变量

案例:对数字分类

给定范围,能检查其中的每个数字,判定每个数字是完全数、不足数和丰沛数。那么就可以寻找到更多的完全数

1、输入范围内的最大数值
2、因数求和
3、数字分类
在这里插入图片描述
这里面用到了两个for循环语句,在循环语句中用循环语句,称为循环的嵌套。在使用时要注意同层代码要用相同缩进。

自测练习

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/401394.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习记录——day30 网络编程 端口号port 套接字socket TCP实现网络通信

目录 一、端口号 port 二、套接字 socket 1、原理 2、socket函数介绍 三、TCP实现网络通信 1、原理 2、TCP通信原理图 3、TCP相关函数 1&#xff09;bind 绑定 2&#xff09;listen 监听 3&#xff09;accept 接收连接请求 4&#xff09;recv 接收 5&#xff09;sen…

Ubuntu系统中安装ffmpeg工具(详细图文教程)

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《暗光增强》 &a…

RAG:系统评估,以RAGAS为例

面试的时候经常会问到&#xff0c;模型和系统是怎么评估的&#xff0c;尤其是RAG&#xff0c;这么多组件&#xff0c;还有端到端&#xff0c;每部分有哪些指标评估&#xff0c;怎么实现的。今天整理下 目前最通用的是RAGAS框架&#xff0c;已经在langchain集成了。在看它之前&…

Java面试--设计模式

设计模式 目录 设计模式1.单例模式&#xff1f;2.代理模式&#xff1f;3.策略模式&#xff1f;4.工厂模式&#xff1f; 1.单例模式&#xff1f; 单例模式是Java的一种设计思想&#xff0c;用此模式下&#xff0c;某个对象在jvm只允许有一个实例&#xff0c;防止这个对象多次引…

文本分类任务算法演变(一)

文本分类任务算法演变 1.简介和应用场景1.1使用场景-打标签1.2使用场景-电商评论分析1.3使用场景-违规检测1.4使用场景-放开想象空间 2贝叶斯算法2.1预备知识-全概率公式2.2贝叶斯公式2.3文本分类中的应用2.3.1任务如下 2.4贝叶斯的优缺点 3.支持向量机3.1支持向量机-决策函数3…

libnl教程(2):发送请求

文章目录 前言示例示例代码构造请求创建套接字发送请求 简化示例 前言 前置阅读要求&#xff1a;libnl教程(1):订阅内核的netlink广播通知 本文介绍&#xff0c;libnl如何向内核发送请求。这包含三个部分&#xff1a;构建请求&#xff1b;创建套接字&#xff1b;发送请求。 …

Web开发:web服务器-Nginx的基础介绍(含AI文稿)

目录 一、Nginx的功能&#xff1a; 二、正向代理和反向代理的区别 三、Nginx负载均衡的主要功能 四、nginx安装目录下的各个文件&#xff08;夹&#xff09;的作用&#xff1a; 五、常用命令 一、Nginx的功能&#xff1a; 1.反向代理&#xff1a;例如我有三台服务器&#x…

大数据项目——实战项目:广告数仓(第二部分)集群环境部署

目录 第4章 广告数仓架构设计 第5章 集群环境准备 5.1 服务器准备 5.1.1 创建3台虚拟机 5.1.2 SSH无密登录配置 5.1.3 编写集群分发脚本xsync 5.1.4 JDK准备 5.1.5 环境变量配置说明 5.2 Hadoop部署 5.2.1 完全分布式运行模式&#xff08;开发重点&#xff09; 5.2…

去噪、梯度与边缘检测

图像噪点消除 噪声在图像处理中指的是图像中出现的干扰因素&#xff0c;通常由采集设备或传输过程引起。噪声使得图像的亮度变得不均匀或引入了随机的干扰点。常见的噪声类型包括&#xff1a; 高斯噪声&#xff1a;符合正态分布的噪声&#xff0c;会使图像变得模糊或出现噪点。…

Java基础之switch分支语句

switch分支语句 ​ switch语句也称为分支语句&#xff0c;其和if语句有点类似&#xff0c;都是用来判断值是否相等&#xff0c;但switch默认只支持byte、short、int、char这四种类型的比较&#xff0c;JDK8中也允许String类型的变量做对比。 语法&#xff1a; switch (表达式…

8.15 哈希表中等 139 Word Break review 467 Unique Substrings in Wraparound String

139 Word Break【逐一对比vs.多种 分割 组合】 片面思考的思路&#xff1a; class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {//字符串和对应的字典&#xff0c;如果s种可以用空格分隔出一个或多个字典里的词就返回true//核心&#x…

windows 安装TVM

TVM支持在Windows环境下使用&#xff0c;但需要一些额外的配置。以下是如何在Windows Python环境中安装TVM的详细步骤。 1. 安装TVM的预备条件 在Windows上安装TVM之前&#xff0c;需要确保系统已经安装了以下工具和依赖项&#xff1a; Visual Studio: 安装包含C开发工具的V…

利用ZXing.Net Bindings for EmguCV识别条形码及绘制条形码边框17(C#)

上一篇博文&#xff1a;绘制条形码的效果不是很好&#xff1a;利用Emgucv绘制条形码边框16(C#)-CSDN博客 测试环境&#xff1a; win11 64位操作系统 visual studio 2022 ZXing.Net.Bindings.EmguCV 0.16.4 测试步骤如下&#xff1a; 1 新建.net framework 4.8的控制台项目…

Linux日常运维-主机名hosts

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 本小章内容就是Linux进阶部分的日常运维部分&#xff0c;掌握这些日常运维技巧或者方法在我们的日常运维过程中会带来很多方…

【Vue3】嵌套路由

【Vue3】嵌套路由 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本文内…

【Linux】缓冲区和文件系统

目录 一、缓冲区 1.1 概念 1.2 用户缓冲区和内核缓冲区 二、磁盘的结构 三、文件系统 3.1 初识“块”和inode 3.2 磁盘分区和文件系统 一、缓冲区 1.1 概念 要理解什么是缓冲区&#xff0c;先看这段代码 #include <stdio.h> #include <string.h> #includ…

Linux系统驱动(十八)SPI总线(未整理)

文章目录 一、SPI总线协议简介二、SPI子系统驱动&#xff08;二&#xff09;SPI子系统API&#xff08;三&#xff09;SPI设备树节点 三、代码示例 一、SPI总线协议简介 高速、同步、全双工、非差分、总线式 传输速度在几十M 差分总线和非差分总线 非差分总线&#xff1a;受压…

江协科技STM32学习笔记(第13章 WDG看门狗)

第13章 WDG看门狗 13.1 WDG看门狗 13.1.1 WDG简介 看门狗就是程序运行的一个保障措施&#xff0c;我们得在程序中定期地喂狗&#xff0c;如果程序卡死了&#xff0c;没有在规定的时间里喂狗&#xff0c;那么看门狗硬件电路就会自动帮我们复位一下&#xff0c;防止程序长时间…

最新爆火文生图模型FLUX

在AI图片生成领域&#xff0c;Flux模型的推出引起了广泛关注。随着AI技术的不断进步&#xff0c;新的模型层出不穷&#xff0c;而Flux正是其中的一颗新星。 Flux&#xff1a;一款迅速走红的AI图片生成模型 8月初&#xff0c;初创公司Black Forest Labs推出了文本生成图像模型…

米联客-FPGA程序设计Verilog语法入门篇连载-10 Verilog语法_一般设计规范

软件版本&#xff1a;无 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用所有系列FPGA 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑&#xff01; 1概述 本小节讲解Verilog语法的一般…