




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章程序的控制结构 程序的循环结构 根据循环执行次数的确定性 分为确定次数循环和非确定次数循环确定次数循环指循环体对循环次数有明确的定义 这类循环在Python中被称为 遍历循环 其中 循环次数采用遍历结构中元素个数来体现 具体采用for语句实现 非确定次数循环指程序不确定循环体可能的执行次数 而通过条件判断是否继续执行循环体 Python提供了根据判断条件执行程序的无限循环 具体采用while语句实现 程序的循环结构 Python通过保留字for实现 遍历循环 基本使用方法如下 forin 之所以称为 遍历循环 是因为for语句的循环执行次数是根据遍历结构中元素个数确定的 遍历循环可以理解为从遍历结构中逐一提取元素 放在循环变量中 对于每个所提取的元素执行一次语句块 遍历循环 for语句 遍历结构可以是字符串 文件 组合数据类型或range 函数 常用的使用方式如下 遍历循环 for语句 遍历循环还有一种扩展模式 使用方法如下 forin else 遍历循环 for语句 在这种扩展模式中 当for循环正常执行之后 程序会继续执行else语句中内容 else语句只在循环正常执行之后才执行 因此 可以在中放置判断循环执行情况的语句 这里先给一个小例子 遍历循环 for语句 很多应用很难在执行之初就有确定的遍历结构 这需要编程语言提供根据条件进行循环的语法 称为无限循环 又称条件循环 无限循环一直保持循环操作直到特定条件被满足才结束 不需要提前知道循环次数 无限循环 while语句 Python通过保留字while实现无限循环 基本使用方法如下 while 其中与if语句中的判断条件一样 结果为True和False 无限循环 while语句 在这种扩展模式中 当while循环正常执行之后 程序会继续执行else语句中内容 else语句只在循环正常执行之后才执行 因此 可以在中放置判断循环执行情况的语句 例如 无限循环 while语句 程序执行后的效果如下 如果通过while实现一个计数循环 需要在循环之前对计数器idx进行初始化 并在每次循环中对计数器idx进行累加 如上述代码第4行 相比for循环 循环变量逐一取自遍历结构 不需要程序维护计数器 无限循环 while语句 循环结构有两个辅助保留字 break和continue 它们用来辅助控制循环执行 break用来跳出最内层for或while循环 脱离该循环后续执行 例如 循环保留字 break和continue 其中 break语句跳出了最内层for循环 但仍然继续执行外层循环 每个break语句只有能力跳出当前层次循环 continue用来结束当前当次循环 即跳出循环体中下面尚未执行的语句 但不跳出当前循环 对于while循环 继续求解循环条件 而对于for循环 程序流程接着遍历循环列表 循环保留字 break和continue 对比continue和break语句 如下 循环保留字 break和continue 两个程序执行后的效果分别为 PYHONPY random库的使用 随机数在计算机应用中十分常见Python内置的random库主要用于产生各种分布的伪随机数序列random库采用梅森旋转算法 Mersennetwister 生成伪随机数序列 可用于除随机性要求更高的加解密算法外的大多数工程应用 random库概述 使用random库主要目的是生成随机数 因此 读者只需要查阅该库的随机数生成函数 找到符合使用场景的函数使用即可 这个库提供了不同类型的随机数函数 所有函数都是基于最基本的random random 函数扩展而来 random库概述 random库解析 random库常用的9个随机数生成函数 对random库的引用方法与math库一样 可采用下面两种方式实现importrandom或fromrandomimport 使用random库的一些例子如下 请读者注意 这些语句每次执行后的结果不一定一样 random库解析 random库解析 生成随机数之前可以通过seed 函数指定随机数种子 随机种子一般是一个整数 只要种子相同 每次生成的随机数序列也相同 这种情况便于测试和同步数据 例如 random库解析 的计算 的计算 随着计算机的出现 数学家找到了另类求解 的方法 蒙特卡罗 MonteCarlo 方法 又称随机抽样或统计试验方法 当所要求解的问题是某种事件出现的概率 或者是某个随机变量的期望值时 它们可以通过某种 试验 的方法 得到这种事件出现的频率 或者这个随机变数的平均值 并用它们作为问题的解 这就是蒙特卡罗方法的基本思想 的计算 2020 1 29 25 可编辑 应用蒙特卡罗方法求解 的基本步骤如下 随机向单位正方形和圆结构 如图4 10所示 抛洒大量 飞镖 点 计算每个点到圆心的距离从而判断该点在圆内或者圆外 用圆内的点数除以总点数就是 4值 的计算 为了简化计算 一般利用图形的1 4求解 值 如图4 11所示 该问题的IPO表示如下 输入 抛点数处理 计算每个点到圆心的距离 统计在圆内点的数量输出 值 的计算 的计算 上述代码中 random 函数随机返回一个在 0 1 之间的浮点数 用两个随机数给出随机抛点 x y 的坐标 sqrt 函数来自于数学库math 用来求解输入数据的平方根 第一次调用clock 函数启动一个新的计时器 第二次调动clock 函数返回启动计时器后的时间 的计算 代码中DARTS是一个常量 初始设定这个抛点数为1000 该程序运行结果如下 Pi值是3 144 运行时间是 0 016477s计算得到的 值为3 144 与大家熟知的3 1415相差较远 原因是DARTS点数量较少 无法更精确刻画面积的比例关系 的计算 表4 4列出了不同DARTS值情况下该程序的运行情况 可以看到 随着DARTS数量的增加 在220数量级上 的值就相对准确了 的计算 异常处理机制 观察下面这段小程序num eval input 请输入一个整数 print num 2 当用户输入数字时 程序正常执行 如果用户输入的不是数字呢 异常处理 try except语句 异常处理 try except语句 可以看到 Python解释器返回了异常信息 同时程序退出 图4 12具体说明了这个异常信息中各部分的含义 异常处理 try except语句 Python异常信息中最重要的部分是异常类型 它表明了发生异常的原因 也是程序处理异常的依据 Python使用try except语句实现异常处理 基本的语法格式如下 try except 异常处理 try except语句 语句块1是正常执行的程序内容 当发生异常时执行except保留字后面的语句块 为这个小例子增加异常处理 代码如下 异常处理 try except语句 try except语句可以支持多个except语句 语法格式如下 try except except except 异常的高级用法 其中 第1到第N个except语句后面都指定了异常类型 说明这些except所包含的语句块只处理这些类型的异常 最后一个except语句没有指定任何类型 表示它对应的语句块可以处理所有其他异常 这个过程与if elif else语句类似 是分支结构的一种表达方式 一段代码如下 异常的高级用法 异常的高级用法 该程序将用户输入的数字作为索引从字符串alp中返回一个字符 当用户输入非整数字符时 exceptNameError异常被捕获到 提升用户输入类型错误 当用户输入数字不在1到26之间时 异常被except捕获 程序打印其他错误信息 执行过程和结果如下 异常的高级用法 除了try和except保留字外 异常语句还可以与else和finally保留字配合使用 语法格式如下 try except else finally 异常的高级用法 此处的else语句与for循环和while循环中的else一样 当try中语句块1正常执行结束且没有发生异常时 else中语句块3执行 可以看作是对try语句块正常执行后的一种追加处理 finally语句块则不同 无论try中语句块1是否发生异常 语句块4都会执行 可以将程序执行语句块1的一些收尾工作放在这里 例如关闭打开文件等 异常的高级用法 采用这些保留子的异常处理控制流过程如图4 13所示 异常的高级用法 采用else和finally修改代码如下 异常的高级用法 执行过程和结果如下 异常的高级用法 Python能识别很多种异常类型 但不建议读者编写程序时依赖try except这种异常处理机制 try except异常一般只用来检测极少发生的情况 例如 用户输入的合规性或文件打开是否成功等 对于本节小例子中索引字符串超过范围的情况应该尽量在程序中采用if语句直接判断 尽量避免通过异常处理来应对这种可能发生的 错误 异常的高级用法 对于商业应用的软件产品 稳定性和可靠性是最重要的衡量指标之一 即使这类软件产品 也不会滥用try except类型语句 因为采用try except语句会影响代码的可读性 增加代码维护难度 因此 一般只在关键地方采用try except类型语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华三考试题库及答案
- 森林火警法律知识培训课件
- 桩基全护筒跟进施工课件
- 桥脑病变MRI课件
- 桥梁隧道冲刺课件
- 2025年技能提升跨行业通-用招聘笔试模拟题及答案
- 2025年陪诊师考试知识点探讨与试题及答案
- 2025年验船师考试(C级船舶检验专业实务)复习题及答案二
- 2025年航空公司面试空中乘务员能力预测试题集
- 2025年物流经理专业面试题解答技巧
- 园林技术-大学专业介绍
- 学校食堂员工安全培训
- 静脉采血安全管理
- 18项核心医疗制度
- 脑水肿的诊断与治疗
- 脓毒症抗炎治疗策略
- 旅游发展公务员聘用合同范例
- 康复数字化管理系统需求说明
- 财务岗位招聘笔试题与参考答案
- 电动汽车V2G技术
- 田忌赛马 同步分层作业(含答案)
评论
0/150
提交评论