Python语法基础——循环

news/2024/5/15 21:03:08/文章来源:https://blog.csdn.net/java_faep/article/details/132297824

学习目标

  • 通过使用while循环编写重复执行的语句。
  • 遵从循环的设计策略开发循环。
  • 利用用户的确认控制循环。
  • 用哨兵值控制循环。
  • 通过使用输入重定向从文件获取大量数据而不是从键盘输入来来获取大量数据,并且使用输出重定向将输出存人文件。
  • 使用for循环来实现计数器控制的循环。
  • 编写嵌套循环。
  • 学习减少数值错误的技术。
  • 从大量的例子里学习循环(GCD、FutureTuition、MonteCarloSimulation、PrimeNumber)。
  • 使用break和continue控制程序。
  • 使用一个循环来模拟随机漫步。

一、引言

        循环是一种控制一个语句块重复执行的结构。循环的概念是程序设计的基础。Python提供了两种类型的循环语句:while循环和for循环。while循环是一种条件控制循环,它是根据一个条件的真假来控制的;而for循环是一种计数器控制循环,它会重复特定的次数。

二、while循环

关键点:当一个条件保持为真时while循环重复执行语句。

while循环的语法是:

while loop-continuation-condition:# Loop bodyStatement(s)

        图5-1a显示的是while循环流程图。一个循环体单次执行被称作循环的一次迭代(或操作)。每个循环都包含一个loop-continuation- condition (循环继续条件),这是控制循环体执行的布尔表达式。每次都计算它来检测是否应该执行循环体。如果它的计算结果为真,则执行循环体;否则,终止整个循环并且程序控制权转到while循环后的语句。

        这个显示“programming is fun !”一百次的循环是一个while循环的例子。它的流程图如图5-1b。循环继续条件是count<100并且这个循环体包含两条语句:

 三、循环设计策略

        对于一个初学编程的人来说,编写一个能够正确工作的循环不是一个容易的任务。编写一个循环时可以考虑以下三步。

  •         第1步:确认需要循环的语句。
  •         第2步:把这些语句包裹在一个循环,如下所示。
while True:Statements 
  •         第3步:编写循环继续条件并且添加合适的语句控制循环。
while loop-continuation-condition:StatementsAdditional statements for contro1ing the 1o0p

四、for 循环

关键点:Python的for循环通过一个序列中的每个值来进行迭代。

我们经常是知道循环体需要被执行多少次,所以,使用一个控制变量统计执行的次数。
这种类型的循环被称作计数器控制的循环。大体上,这个循环可以编写成如下形式:

i = initialValue # Initialize loop-contro1 variable
while i < endValue:# Loop body...i += 1 # Adjust loop-contro1 variable

for循环可以用来简化上面的循环:

for i in range(initia1Value, endValue):# Loop body

通常,for 循环的语法是:

for var in sequence:# Loop body

        sequence里保存data的多个条目,且这些条目按照一个接一个地方式存储。在后面的内容里,还将介绍字符串、列表和数组。Python 里它们都是序列类型的对象。变量var表示这个序列里每个连续值,针对每个值,循环体内的语句都执行一次循环体。

Range(a,b)函数返回一系列连续整数a、a+1、... b-2和b-1。例如:

for v in range(4,8):print(v) # 4,5,6,7

        range函数有两种或更多形式。你也可以使用range ( a)也可以使用range ( a,b,k)。range(a)与range(0,a)功能一样。 在range(a,b,k)中k被用作步长值。序列中的第一个数是a。序列中每一个连续数都会被增加一个步长值k。b是界限值。序列中的最后一个数必须小于b。

        如果函数range(a,b,k)中的k为负数,则可以反向计数。在这种情况下,序列仍为a、a+k、a+2k 等等但k为负数。最后一个数必须大于b。例如:

for v in range(5, 1, -1) :print(v)  #5,4,3,2

注意: range 函数中的数必须为整数。例如: range(1.5,8.5)、range(8.5) 或range(1.5,8.5,1)都是错误的。

五、嵌套循环

关键点:一个循环可以嵌套到另一个循环里。

        嵌套循环是由一个外层循环和一个或多个内层循环构成。每次重复外层循环时,内层循环都被重新进入并且重新开始。

例如:

for i in range(1000) :for j in range (1000) :for k in range (1000) :Perform an action 

注意:注意嵌套循环可能会花费很长的时间来运行。分三层来考虑上面嵌套的循环:动作被执行了1 000 000 000次。如果完成这个动作用时1毫秒,那么运行这个循环的总时间将会超过277小时。

六、 最小化数值错误

关键点:在循环继续条件中使用浮点数可能会导致数值错误。

        数值错误涉及浮点数是必然的。这节提供一个如何最小化这种错误的例子。

        下面程序清单中的程序是对一个从0.01开始到1.0 的数列中的数求和。这个数列里的数每次递增0.01,如下所示: 0.01 +0.02+0.03+...


sum=0i = 0.01
while i<= 1.0:sum += ii =i+0.01print("The sum is", sum) #输出49.5

        最后结果显示49.5,但是实际上正确的结果应该为50.5。哪个地方错了?在循环的每次迭代中变量i都递增0.01。当循环结束时,i的值稍稍大于1 (而不是真正为1 )。这导致最后一个i值并没有被加到sum上。最基本的问题是浮点数被近似表示了。

        为了改正这个错误,可以使用一个整数计数器来确保所有的数字都被加到了sum上。下面是一个新的循环:

sum=0count = 0
i = 0.01
while count < 100:sum += ii = i+0.01count += 1print("The sum is", sum)

七、关键字break和continue

关键点:关键字break和continue提供了另一种控制循环的方式。

        建议:两个关键字: break 和continue都可以为循环语句提供额外的控制。在某些情况下,使用break和continue可以简化程序设计。然而,如果过度使用或者使用不恰当则会导致程序很难理解和调试。

        我们可以在循环中使用关键字break来立即终止循环。continue退出一次迭代而break退出整个循环。示例如下:

八、总结

  • 1.两种类型的循环语句:while循环和for循环。
  • 2.循环中需要被重复执行的语句被称为循环体。
  • 3.循环体的一-次执行被叫做循环的一次迭代。,
  • 4.一个无限循环是指循环体的语句无限次被执行。
  • 5.在设计一个循环时,你不仅仅要考虑循环控制结构还要考虑循环体。
  • 6.while循环首先检查循环继续条件。如果条件为真,则执行循环体;否则,循环终止。
  • 7.哨兵值是一个特殊的值,它表明输人值的结束。
  • 8.for循环是计数器控制的循环,循环体执行可预见次数遍。
  • 9.break和continue两个关键字都可以被用在循环中。
  • 10.break关键字立即结束包含这个break的最内层循环。
  • 11.continue只终止当前迭代。

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

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

相关文章

vue 发现页面找不到3秒后跳转到本页面

这个路由跳转用到的是编程式跳转this.$router.push 两种写法&#xff1a; 第一种可以通过path来跳转 goto(/find) find是路由里边的路径 <span click"goto(/find)">发现音乐</span> <span click"goto(/my)">我的音乐</span> <…

单片机如何分散加载文件

本篇文章将通过实际操作介绍如何实现分散加载文件的方法。开发工具为&#xff1a;mdk&#xff1b;开发板&#xff1a;野火stm32f407 一、建立工程 通过实现简单的加法计算的软件算法&#xff0c;来了解分散加载image 的方法。 建立工程&#xff0c;创建文件夹以及相应的文件&am…

【boost网络库从青铜到王者】第三篇:asio网络编程中的buffer缓存数据结构

文章目录 1、关于buffer数据结构1.1、简单概括一下&#xff0c;我们可以用buffer() 函数生成我们要用的缓存存储数据。1.2、但是这太复杂了&#xff0c;可以直接用buffer函数转化为send需要的参数类型:1.3、output_buf可以直接传递给该send接口。我们也可以将数组转化为send接受…

PyQt5资源的加载和使用,即如何使用Pyrcc

1、打开QtDesigner&#xff0c;选择编辑资源 2、新建资源文件&#xff0c;随便找个地方保存 3、按照自己的喜好命名&#xff0c;然后添加资源 4、保存并退出 5、我们创建一个QLabel&#xff0c;在这里添加资源 6、我们保存界面文件&#xff0c;并编译为py文件&#xff0c;然后…

SpringBoot + Mybatis多数据源

一、配置文件 spring: # datasource: # username: root # password: 123456 # url: jdbc:mysql://127.0.0.1:3306/jun01?characterEncodingutf-8&serverTimezoneUTC # driver-class-name: com.mysql.cj.jdbc.Driverdatasource:# 数据源1onedata:jdbc-url: j…

【5款登录验证校验】基于jquery实现的5款登录验证码组件(附完整源码)

文章目录 写在前面涉及知识点1、随机字母验证码1.1 效果1.2 实现源码 2、数字运算验证码2.1 效果2.2 实现源码 3、滑块验证码3.1 效果3.2 实现源码 4、图片补全验证码4.1 效果4.2 实现源码 5、顺序点选验证码5.1 效果5.2 实现源码 6、源码分享6.1 百度网盘6.2 123网盘6.3 邮箱留…

基于STM32的超声波雷达

视频地址:1.基于STM32的超声波雷达-演示_哔哩哔哩_bilibili 备注:文档最后有所有文件的网盘地址 1. 项目展示 1.1. 最终效果 1.2. 项目硬件 全部必要硬件(左到右): ST-LINK调试器:调试下载程序stm32f103c8t6核心板1.8寸TFT显示器sg90舵机超声波传感器

Cpp学习——string模拟实现

目录 一&#xff0c;string的成员变量 二&#xff0c;string的各项功能函数 1.构造函数 2.析构函数 3.扩容函数 4.插入与删除数据的函数 5.运算符重载 6.打印显示函数 7&#xff0c;拷贝构造 8.find函数 一&#xff0c;string的成员变量 在模拟实现string之前&#xff…

k8s 自身原理之 Service

好不容易&#xff0c;终于来到 k8s 自身的原理之 关于 Service 的一部分了 前面我们用 2 个简图展示了 pod 之间和 pod 与 node 之间是如何通信息的&#xff0c;且通信的数据包是不会经过 NAT 网络地址转换的 那么 Service 又是如何实现呢&#xff1f; Service 我们知道是用…

mysql-事务特性以及隔离机制

一.ACID 事务&#xff08;Transaction&#xff09;是访问和更新数据库的程序执行单元&#xff1b;事务中可能包含一个或多个sql语句&#xff0c;这些语句要么都执行&#xff0c;要么都不执行。 1.逻辑架构和存储引擎 如上图所示&#xff0c;MySQL服务器逻辑架构从上往下可以分…

麦肯锡发布《2023年度科技报告》!

在经历了 2022 年技术投资和人才的动荡之后&#xff0c;2023 年上半年&#xff0c;人们对技术促进商业和社会进步的潜力重新燃起了热情。生成式人工智能&#xff08;Generative AI&#xff09;在这一复兴过程中功不可没&#xff0c;但它只是众多进步中的一个&#xff0c;可以推…

vue 路由地址把#去掉

在路由对象里边添加history模式就不显示# mode:history // 4.通过规则创建对象 const router new VueRouter({routes,// 默认模式为hash 带# // history 不带#mode:history })想把端口号8000换成其他的 比如我这样的3000更换端口号教程

自动化测试用例设计实例

在编写用例之间&#xff0c;笔者再次强调几点编写自动化测试用例的原则&#xff1a; 1、一个脚本是一个完整的场景&#xff0c;从用户登陆操作到用户退出系统关闭浏览器。 2、一个脚本脚本只验证一个功能点&#xff0c;不要试图用户登陆系统后把所有的功能都进行验证再退出系统…

【声波】声波在硼酸、硫酸镁 (MgSO4) 和纯水中的吸收研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

部署工业物联网可以选择哪些通信方案?

部署工业物联网有诸多意义&#xff0c;诸如提升生产效率&#xff0c;降低管理成本&#xff0c;保障生产品质稳定&#xff0c;应对长期从业劳动力变化趋势等。针对不同行业、场景&#xff0c;工业物联网需要选择不同的通信方案&#xff0c;以达到成本和效益的最佳平衡。本篇就简…

05-基础入门-系统及数据库等

基础入门-系统及数据库等 一、操作系统层面1、识别操作系统常见方法2、简要两者区别及识别意义3、操作系统层面漏洞类型对应意义4、简要操作系统层面漏洞影响范围 二、数据库层面1、识别数据库类型常见方法2、数据库类型区别及识别意义3、数据库常见漏洞类型及攻击4、简要数据库…

无涯教程-Perl - setpwent函数

描述 此功能将枚举设置(或重置)到密码条目集的开头。应该在第一次调用getpwent之前调用此函数。 语法 以下是此函数的简单语法- setpwent返回值 此函数不返回任何值。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perlwhile(($name, $passwd, $uid, $gid, $quota, …

3. 爬取自己CSDN博客列表(自动方式)(分页查询)(网站反爬虫策略,需要在代码中添加合适的请求头User-Agent,否则response返回空)

文章目录 步骤打开谷歌浏览器输入网址按F12进入调试界面点击网络&#xff0c;清除历史消息按F5刷新页面找到接口&#xff08;community/home-api/v1/get-business-list&#xff09;接口解读 撰写代码获取博客列表先明确返回信息格式json字段解读 Apipost测试接口编写python代码…

laravel框架中批量更新数据

在php框架中 tp中就有批量更新封装好的 SaveAll 在laravel中有批量插入没有批量更新操作;因此我们可以自己去封装一个 然后批量进行更新操作 封装参考代码: /*** 批量更新** param $tableName 表名称* param string $pk 更新的字段* param array $multipleData 要更新的数据*…

外企开展中国在线业务的三种网络加速方案:含免ICP备案CDN解决方案

中国作为全球除美国外最大的消费市场&#xff0c;是几乎每个国际化企业都想要深入挖掘的市场&#xff0c;但外国企业在中国开展在线业务需要面临一个比较特殊的挑战&#xff1a;互联网防火墙&#xff08;GFW&#xff09;。为此所有想要在中国市场有所作为的外企都需要首先解决这…