Python语法基础——循环

news2024/11/25 2:44:46

学习目标

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

一、引言

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

二、while循环

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

while循环的语法是:

while loop-continuation-condition:
    # Loop body
    Statement(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:
    Statements
    Additional 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=0

i = 0.01
while i<= 1.0:
    sum += i
    i =i+0.01

print("The sum is", sum) #输出49.5

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

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

sum=0

count = 0
i = 0.01
while count < 100:
    sum += i
    i = i+0.01
    count += 1

print("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.coloradmin.cn/o/882006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【资料包】HDC.Together 2023精选Codelabs指南现已上线(内有活动)

今年HDC.Together 2023的Codelabs挑战系列活动如期而至&#xff0c;众多开发者齐聚一堂&#xff0c;积极参与。本次赛题中部分Codelabs已在官网上线详细操作指南&#xff0c;让我们与众多coders一起探索代码的独特魅力。 01 ArkTS基础知识&#xff08;ArkTS&#xff09; 本课程…

Spring系列六:JdbcTemplate

&#x1f992;JdbcTemplate &#x1f4d5;实际需求 实际需求: 如果程序员就希望使用spring框架来做项目, spring框架如何处理对数据库的操作呢? 方案1: 使用前面做项目开发的JdbcUtils类方案2: 其实spring提供了一个操作数据库(表)功能强大的类JdbcTemplate. 我们可以同ioc…

目标和——力扣494

文章目录 题目描述解法:动态规划题目描述 解法:动态规划 nt findTargetSumWays(vector<int>& nums, int target){int sum

Paper 推荐第3期|隐私集合求交 PSI 系列

前言&#xff1a; 隐语 awesome-PETs&#xff08;PETs即Privacy-Enhancing Technologies &#xff0c;隐私增强技术&#xff09;精选业内优秀论文&#xff0c;按技术类型进行整理分类&#xff0c;旨在为隐私计算领域的学习研究者提供一个高质量的学习交流社区。awesome-PETs 包…

关于vant2 组件van-dropdown-item,在IOS手机上,特定条件下无法点击问题的探讨

情景重现 先贴有问题的代码 <template><div :class"showBar ? homeContain : homeContain-nobar"><div class"contant" id"content"><van-dialog v-model"loading" :before-close"onBeforeClose" :…

css鼠标样式 cursor: pointer

cursor: none; cursor:not-allowed; 禁止选择 user-select: none; pointer-events:none;禁止触发事件, 该样式会阻止默认事件的发生&#xff0c;但鼠标样式会变成箭头

openpose姿态估计【学习笔记】

文章目录 1、人体需要检测的关键点2、Top-down方法3、Openpose3.1 姿态估计的步骤3.2 PAF&#xff08;Part Affinity Fields&#xff09;部分亲和场3.3 制作PAF标签3.4 PAF权值计算3.5 匹配方法 4、CPM&#xff08;Convolutional Pose Machines&#xff09;模型5、Openpose5.1 …

【uniapp2】获取manifest里的versionName版本号

在要展示版本号的页面中添加&#xff1a; onLoad() {// 获取本地应用资源版本号plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) > {this.innerVer wgtinfo.version;this.versionCode wgtinfo.versionCode;console.log(wgtinfo);});},打印看看获取的信息&#x…

机器学习---逻辑回归代码

1. 逻辑回归模型 import numpy as npclass LogisticRegression(object):def __init__(self, learning_rate0.1, max_iter100, seedNone):self.seed seedself.lr learning_rateself.max_iter max_iterdef fit(self, x, y):np.random.seed(self.seed)self.w np.random.normal…

视频汇聚平台EasyCVR安防监控视频汇聚平台的FLV视频流在VLC中无法播放的问题解决方案

众所周知&#xff0c;TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入&#xff0c;包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上&#xff0c;视频监控…

ESP8266获取网络时间 实时时钟

程序现象 一、用串口调试助手调试 1.发送指令ATRST重启模块使应用模式更改生效&#xff1b; 2.发送指令ATE0取消回显 3.使用串口发送指令ATCWMODE1设置模块Wi-Fi应用模式为Station模式&#xff1b; 4.发送指令ATCWJAP "ssid","pwd"连接AP&#xff1b; …

react-native-webview RN和html双向通信

rn登录后得到的token需要传递给网页&#xff0c;js获取到的浏览器信息需要传递给rn RN Index.js: import React from react import { WebView } from react-native-webview import useList from ./useListexport default function Index(props) {const { uri, jsCode, webVie…

23款奔驰S450 4MATIC升级车载冰箱系统,快乐就是这么朴实无华呀

凉爽餐饮随时触手可及。容积10升的可拆卸冷藏箱与后排扶手和谐融合。如此一来&#xff0c;即使在炎炎夏日&#xff0c;也可享受沁凉的冷饮。

Vue3头像(Avatar)

效果如下图&#xff1a;在线预览 APIs 参数说明类型默认值必传shape指定头像的形状‘circle’ | ‘square’‘circle’falsesize设置头像的大小number | ‘large’ | ‘small’ | ‘default’ | Responsive‘default’falsesrc图片类头像资源地址string‘’falsealt图片无法显…

关于微信临时文件wxfile://tmp文件如何处理,微信小程序最新获取头像和昵称

分享-2023年资深前端进阶&#xff1a;前端登顶之巅-最全面的前端知识点梳理总结&#xff0c;前端之巅 *分享一个使用比较久的&#x1fa9c; 技术栈&#xff1a;taro框架 vue3版本 解决在微信小程序获取微信头像时控制台报错&#xff1a;找不着wxfile://tmp 文件路径,失败&…

迁移协调器 - 就地迁移模式

在本系列博客的第一部分中&#xff0c;我们从高层级视角介绍了 Migration Coordinator 提供的所有模式&#xff0c;Migration Coordinator 是内置于 NSX 中的完全受 GSS 支持的工具&#xff0c;可将 NSX for vSphere 迁移到 NSX (NSX-T)。 本系列的第二篇博客将详细介绍就地迁…

cesium 卫星环绕扫描

成果图 源码 let viewer new Cesium.Viewer(cesiumContainer,{// terrainProvider: Cesium.createWorldTerrain(),geocoder: false, // 隐藏查找位置homeButton: false, // 隐藏返回视角到初始位置sceneModePicker: false, // 隐藏视角模式的选择baseLayerPicker: false, // 隐…

亚马逊云科技助力珠海丹德构建安全技术底座,促进商业发展

随着消费者对商品质量和安全关注度的不断提高&#xff0c;防伪、溯源、防窜已经成为企业关注的重要领域。据前瞻产业研究院数据显示&#xff0c;2028年中国防伪行业市场容量将超过4000亿元&#xff0c;未来市场对防伪、溯源、防窜技术的需求和重视程度可见一斑。 作为一家用智慧…

软件测试项目实战,电商业务功能测试点汇总(全覆盖)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 支付功能怎么测试…