前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第四章2:for 循环

第四章2:for 循环

作者头像
double
发布2021-03-12 11:18:22
6790
发布2021-03-12 11:18:22
举报
文章被收录于专栏:算法channel

《Python projects for beginners》是我所见最友好的Python入门书,前段时间我组织并与几位Python爱好者一起对此书翻译为中文,特别感谢参与翻译的这些小伙伴,你们辛苦了。我正在以推文形式连载出来,欢迎学习。

星期二:for循环

今天将花费很多页面来介绍一个项目中的关键概念——循环。在实际应用中,你需要多次运行相同的代码。相比于我们多次重复写下相同的代码行,循环对于我们就方便很多了。在Python中,有两种循环类型,今天的课程中我们将介绍“For循环”。

为了跟上这一课,让我们继续在上一个notebook文件“Week_04”写代码并且只增加一个内容为“For循环”的markdown模块。

循环如何工作

循环就是项目如何多次返回相同代码行,执行相同的命令。在一个条件满足之前,循环会一直运行。以射击游戏为例,除非你获胜或你的生命值耗尽,否则游戏会一直运行下去。一旦这两个条件出现一个,游戏就会终止。


注意:它对于尽可能少的行来缩减你的代码非常重要,同时,对于项目运行也更有效率。


无论你是否知道这一概念,循环存在我们生命中无所不在。每天我们起床,上班,睡觉,我们是当一个常识来知道他们,但是它却是一个简单的循环。我们每天重复相同的过程,直到 们遇到周未。这一概念正是我们项目中的循环。

写下一个For循环

For循环主要应用在循环一系列数字。以表4-1为例,这个语法表明循环将返回五次。------每一个循环都是使用关键词“For”来声明开始。这个时候你会定义一个暂时变量,有时是作为一个计数或索引。接下来是关键词“in”,随后便是范围函数(范围函数将在之后解释)。最后,我们使用冒号来声明结束。对于所有的循环都遵循这样的结构:关键词For、暂时变量、关键词in、范围函数和冒号。

现在我们考虑写下循环的结构,马上让我们写一个:

代码语言:javascript
复制
# 使用range()函数写下你的第一个for循环
for num in range(5):
    print("Value:{}".format(num))

继续并运行这一代码块。结果将会输出“0,1,2,3,4”。这个循环对于5的计数是必要的并且列印出每一个数字。那么,它又是如何输出这些数字的呢?当For循环被创建,range函数默认以0为开头并将0值分配给暂时变量num。我们称每一次循环为迭代。对于每一次迭代,一旦代码块中的全部代码运行,那么,当前迭代就已经完成了,并且循环将再次从头开始。本次循环中,暂时变量num的值默认以步长1递增。我们的暂时变量被分配数值1并且继续运行for循环内部能够列印出暂时变量num值的代码。代码将持续输出数字,直到迭代完5次。为了给你一个每次迭代分配数字的直观感受,请看表4-2。

表4-2 对于每次迭代使用range()函数分配数值

迭代循环

数值

输出

1

0

Value:0

2

1

Value:1

3

2

Value:2

4

3

Value:3

5

4

Value:4


注意:数字5没有被输出,因为range()函数计数5次但不包括数字5。


range()

Range函数允许我们对一个范围计数,当能够定义从哪开始和在哪结束以及我们需要增加多少和减少多少。这就意味着我们可以计数每一个数字,如果你需要,还可以计数每5个数字。使用一个For循环,它能够让我们有能力循环一个代码的特定次数。在之前的例子中,我们看到数字为5时,列印出5个数字。这是因为range函数默认为从0开始并且每次以步长1增加。让我们来看另一个例子:

代码语言:javascript
复制
#对于range()函数提供开始、结束和步长
for num in range(2, 10, 2):
 print("Value:{}".format(num)) # 列印全部在2到10范围内间隔为2的所有数值

继续并运行这一代码块。这次我们设定项目从数字2开始循环,每次间隔2并到10结束。这时我们输出的值就变为“2, 4, 6, 8”。

元素循环

当了解到可迭代的数据类型如何工作,这就意味着它们有一个能够实现循环的元素收集器。我们通过下面这一不同的For循环来看下:

代码语言:javascript
复制
# 使用关键词in来列印出变量name中的所有单个字符
name = "John Smith"
for letter in name:
 print("Value:{}".format(letter))

继续并运行这一代码块。结果将会每次输出变量name中的第一个字符。记住字符串可以是索引和字母或字符的集合,这将能够让字符串进行迭代。上面的for循环将会迭代每一个字母并且运行代码块中输出每一个字母/字符的代码。表4-3展现了这个迭代循环输出的前6个字符。

表4-3 在字符串的范围内循环迭代数值

迭代循环

字符

输出

1

J

Value:J

2

o

Value:o

3

h

Value:h

4

n

Value:n

5

空格符

Value:

6

S

Value:S

continue语句

现在我们已经看到了循环如何工作,接下来,让我们讨论一些我们使用循环的重要状态。第一个就是continue语句。一旦continue语句被打破,那么,目前的迭代状态就会停止并回到循环的最开始的地方。让我们来看一个例子:

代码语言:javascript
复制
# 在一个for循环中使用continue语句
for num in range(5):
 if num == 3:
  continue
 print(num)

继续并运行这一代码块。将会输出“0, 1, 2 ,4”,因为只有在num等于数字3的时候,continue语句才会被运行。一旦这个状态被打破,目前的迭代就会终止并回到最开始的地方进行下一个循环。这也意味着在contine下方的所有代码都不会被运行,所以上面的代码中没有列印出数字3。

break语句

我们使用的最重要的状态之一是break语句。它允许我们在任何一个地方及时跳出当前的循环。让我们来看一个例子:

代码语言:javascript
复制
# 使用break语句跳出当前循环
for num in range(5):
    if num ==3:
        break
    print(num)

继续并运行这一代码块。结果只会输出“0, 1, 2”,这是因为当num等于3时,触发了break语句语句使得循环直接被终止,break以下的所有代码都不会被运行。这对于当一个条件被满足时停止循环是非常有用的。


注意:如果你用了双层循环,break语句只有终止其所在循环的代码块,另一层循环将会继续运行。这就意味着break语句如果只用于内部循环,那么外部循环仍会继续运行。


pass语句

三个状态中的最后一个是pass语句。pass语句仅仅是一个占位符,以便让项目不会被终止。让我们来看这样一个例子:

代码语言:javascript
复制
# 使用pass语句设置一个占位符
for i in range(5):
    # TODO: 增加打印数字的代码
    pass

继续并运行这一代码块。你会发现什么也没有发生,但这也意味着是一个好消息。如果你完全使用pass语句,项目将会终止。因为在代码块中需要填入其他的代码来实现相关功能。

在以上的简单循环中,我们没有必要在循环中写入这些状态代码。但却能够使一个项目结构清晰,条理分明。


注意:一般使用“TODAO”来为我们将要实现的功能设置提醒。


星期二练习

1.被3整除:写下一个for循环,列印出数字1到10之间能够被3整除的数字。

2.只列印出元音字母:定下一个for循环,列印出用户输入的单词(小写)中的所有元音字母。例如:

代码语言:javascript
复制
input:"hello"
output:"eo"

今天我们花费了些时间学习了关于for循环的概念及其如何运行。循环允许我们多次返回运行相同的代码行。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 《Python projects for beginners》是我所见最友好的Python入门书,前段时间我组织并与几位Python爱好者一起对此书翻译为中文,特别感谢参与翻译的这些小伙伴,你们辛苦了。我正在以推文形式连载出来,欢迎学习。
  • 星期二:for循环
    • 循环如何工作
      • 写下一个For循环
        • range()
          • 元素循环
            • continue语句
              • break语句
                • pass语句
                  • 星期二练习
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档