热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python3.2官方文档教程-流程控制语句(if,for,pass)

除了前面介绍的while语句外,python也使用在其他语言中所熟知的一些流程控制语句。2.1if语句可能最被人周知控制语句就是if语句了,例如:>>>xint(inp

 除了前面介绍的while语句外,python也使用在其他语言中所熟知的一些流程控制语句。

2.1 if语句

 可能最被人周知控制语句就是if语句了,例如:

>>> x = int(input("Please enter an integer: "))

Please enter an integer: 42

>>> if x < 0:

... x = 0

... print(Negative changed to zero)

... elif x == 0:

... print(Zero)

... elif x == 1:

... print(Single)

... else:

... print(More)

...

More

 

Elif 可不出现也可多次出现和else部分也是可以选择的。关键elifelse if 的缩写形式,对于避免冗长的定义有很大帮助。If... Elif... Elif 语句在其他变成语言中可用switch case 语句来替代。

2.2 for语句

python中的for语句可能有以前你在C或者pascal中所用的有点小差别。她既不像Pascal语言中常常遍历数组的算法过程,也不像在C语言中给用户自己定义遍历步骤或模糊条件的能力,python中的for语句可以按照元素在序列(列表或者字符串)中出现的顺序逐步地遍历它们。例如:

>>> # Measure some strings:

... a = [catwindowdefenestrate]

>>> for x in a:

... print(x, len(x))

...

cat 3

window 6

defenestrate 12

在循环语句中修改正在遍历的序列是不安全的(这种情况仅仅发生在可变类型中,如列表)。如果你需要修改你正在遍历的列表(例如,想复制选中项)你必须首先复制list。然后利用分片符号很方便实现它。

>>> for x in a[:]: # make a slice copy of the entire list

... if len(x) > 6: a.insert(0, x)

...

>>> a

[defenestratecatwindowdefenestrate]

2.3 range()方法

如果你想迭代一个数字序列,内置方法range()可以很方便实现它。它可以生成连续的数字:

>>> for i in range(5):

... print(i)

...

0

1

2

3

4

方法中给出的结点不是产生序列中的一部分。Range(10)就是产生为长度为10序列中每个元素产生10个合法的索引值。该方法也可以让范围从其他数字开始,或者指定不同的增长数(甚至是负数,有时称这为阶梯)。

range(5, 10)

5 through 9

range(0, 10, 3)

0, 3, 6, 9

range(-10, -100, -30)

-10, -40, -70

为了迭代序列的目录,你可以结合range()len()结合起来,例如:

>>> a = [Maryhadalittlelamb]

>>> for i in range(len(a)):

... print(i, a[i])

...

0 Mary

1 had

2 a

3 little

4 lamb

 

但是,在许多情况下,运用enumerate()方法会更加方法,具体参照 Looping Techniques. 

如果你想打印一个范围,奇怪的现象将会出现。

>>> print(range(10))

range(0, 10) 

在很多情况下利用range()返回对象表现像列表,但实际上它不是列表。尽管当你迭代期望序列时,它能够依次地返回元素,但是它没有真正生成列表,因此节省空间。

我们可以把对象成为是可迭代的,就是指它很适合作为预期得到有序元素事情的方法和结构的对象。 我们已经知道for语句就是这种迭代器。方法list()也算一个,它可以产生有序列表。

>>> list(range(5))

[0, 1, 2, 3, 4]

稍后我们会看到更多能返回迭代对象和把迭代对象当做内容的方法。 

2.4  breakcontinue语句和在循环中的else子句

与在C语言中一样,Break 语句将会跳出离它最近的for或者while循环。

Continue语句也是从C中借鉴而来,继续开始循环的下一步。

循环语句中有时含有else的子句。当通过遍历结束导致循环终止(for)或者当循环条件变为false(如while,它将会执行。但是当循环被break语句所终止,它不会被执行。下面通过查询质数这个例子来学习:

 

是的,这是正确代码。请仔细看,else语句是属于for循环的,而不是if语句。与else用在if语句中相比,else用于循环中与用在try语句有更多相同之处。在try语句中当没有异常发生else语句将会执行,循环中当没有break发生else语句就会执行。对于更多的关于try语句和异常的信息可以查看处理异常:

 

2.5 Pass语句

Pass语句一般做些无关紧要的事情,当按照句法语句被要求时但是系统不需要任何操作,此时可以用pass语句。例如:

>>> while True:

... pass # Busy-wait for keyboard interrupt (Ctrl+C)

...

还常常用在创建最小类中。

>>> class MyEmptyClass:

... pass

...

能用到pass的另一个地方就是当你运行新代码时它作为方法或者条件主体的拥有者,允许你在一个更加抽象的层次去不停地思考。Pass将会被静静忽略:

>>> def initlog(*args):

... pass # Remember to implement this!

...


推荐阅读
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 解决文件名过长下载失败问题的jQuery方案
    本文介绍了使用jQuery解决文件名过长导致下载失败的问题。原方案中存在文件名部分丢失的问题,通过动态生成隐藏域表单并提交的方式来解决。详细的解决方案和代码示例在文章中给出。 ... [详细]
  • WPF开发心率检测大数据曲线图的高性能实现方法
    本文介绍了在WPF开发中实现心率检测大数据曲线图的高性能方法。作者尝试过使用Canvas和第三方开源库,但性能和功能都不理想。最终作者选择使用DrawingVisual对象,并结合局部显示的方式实现了自己想要的效果。文章详细介绍了实现思路和具体代码,对于不熟悉DrawingVisual的读者可以去微软官网了解更多细节。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
author-avatar
甜甜M雪糕
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有