for循环

来源:互联网 发布:ubuntu14.04安装php 编辑:程序博客网 时间:2024/05/18 15:23

1.执行重复的任务

使用计算机的一个巨大好处就是,它会不厌其烦地一遍又一遍地执行一个任务。把一个任务一遍又一遍的执行叫做重复。重复的同义词是迭代。在编程的世界中,迭代是重复执行一组已定义的任务,直到产生期待的结果或者任务已被执行了期望的次数的过程。

在Python中提到循环时,则使用迭代这个词。一轮循环称为一次迭代。多次经过一个循环称为通过循环迭代。

2.使用for循环进行迭代

在Python中,for循环结果称为“记数控制”循环,这是由于循环的任务设定为执行一定的次数。如果想要一组语句被执行5次,可以使用for循环来完成这个任务。

for循环在Python中的语法结构如下所示:

for variable in [ data_list]:set_of_Python_statements

注意:在for循环结构中没有结束语句。在一些编程语言中,你或许可能会看到一个“done”或者“end”之类的语句。在for循环中,Python语句需要在for结构下使用缩进。这与if-then 语句是类似的。循环中的语句需要进行缩进。在IDLE中,编辑器会自动帮你做这些事情。然而在文本编辑器中,你需要自已使用制表符或者空格进行缩进。

for循环的逻辑如下:

  1. 在for循环构建时,循环的data_list 中的第一个值会被赋值给变量variable。
  2. 循环中的Python语句被执行,在执行期间可以使用变量所赋的值。
  3. 在该次循环结束后,data_list 中的下一个值将被重新赋给变量。
  4. 然后执行循环中的语句,在执行期间可以使用被重新赋值的变量。
  5. for循环会一直执行,直到循环范围中的所有的值都被赋值给变量,并且每次循环中的Python语句都会被执行。

a、 遍历列表中的数字

可以使用for循环遍历一个数字列表中的数字。如下代码所示,循环体中的唯一语句是 print(the_number),这条语句会打印当前循环体的数字。

#一个for循环for the_number in [1,2,3,4,5]:    print(the_number)

注意上述for循环中数据列表的格式。数字用一对方括号括起来,并且数字用逗号分隔开来。列表中的数字将会从第一个数字(1)开始,赋值给变量 the_number 。在 print(the_number)执行完毕之后,列表中的下一个数字会赋值给变量 the_number。

循环会持续执行直到列表中的最后一个值赋值给变量,并且循环中的语句执行完成。这样,列表中的所有数字都会使用了,而且每次迭代一个。接下来,我们通过一个简单的单步执行for循环图,来进一步了解for循环是如何执行的?
这里写图片描述

b、注意一些“陷阱”

需要注意for循环结构中一些潜在的问题。
第一个“陷阱”是忘记在for循环的值列表后加冒号,不加冒号就会显示出如下所示的错误信息:
这里写图片描述

注意:当在Python交互命令行中测试循环语句时,需要在最后一个循环语句后按两次回车键。这个操作告诉交互式命令这个循环已经准备好被解释并计算结果啦。然而在文本编辑器中,不需要多按一次回车键。

下一个“陷阱”是在数据列表中忘记使用逗号,在下面的图片中我们可以看出如果在数据列表中没有使用逗号会报什么样的错。
这里写图片描述

在这里不要忘记保持缩进一致。如果使用空格作为缩进,那么一定要保证对每一条for循环体中的语句使用同样数量的空格作为缩进。如果使用制表符,那么记住使用同样数量的制表符进行缩进。接下来,我们来看一个不一致的缩进,会出现什么样的错误。
这里写图片描述

使用的数字列表中的数字不一定要按照数字的排列顺序:
这里写图片描述
可以看到数据被按照它们在数字列表中的顺序进行处理。Python在处理这个列表时,没有任何的错误,它简单的遵循列表中的顺序。

注意:在Python并不会限制你在数字列表中的的逗号和数字之间放多少个空格。数字列表[1,2,3,4,5]对于for循环来说是合法的。然而这种格式不是很好。最好是在数字列表中每一个逗号和下一个数字之间放一个空格。

c、由值指定的数据类型

在for循环中,Python会像你期待的那样处理数据类型,在下列代码中我们可以看出当Python将每一个数字赋值给
变量the_number时,指定的是int(整数)数据类型。

for the_number in [1,2,3,4,5]:    print(the_number)    type(the_number)

这里写图片描述
如果需要的话,Python也会在赋值过程中改变数据类型,如下图所示。例如,从整数5到浮点数5.5会导致数据类型也会改变。

改变数据类型

这里写图片描述

d、遍历字符串列表

除了遍历数据列表的数字之外,也可以用for循环处理字符串列表。在下列的代码中,字符串列表中使用了5个单词代替了数字。
这里写图片描述
循环遍历数据列表中的每一个汉字,就像是对数字列表所做的一样。然而注意,需要使用引号将其括起来。

注意:在列表中如果喜欢的话,可以使用双引号而不是单引号括住每一个单词,甚至可以使用单括号括住一些词,然后双引号括住其他的词。然而这种不一致的格式是不好的。因此,请只选择一种引号格式在列表中使用。

e、使用变量进行遍历

数据列表并没有限制为仅是数字和字符串。也可以在for循环的数据列表中使用变量,在下列代码中,就将数字10 赋值给了变量 top_number。

top_number = 10for the_number in [1,2,3,4,top_number]:    print(the_number)

这里写图片描述
for循环对于这种变化是可以处理的。循环是将把10赋值给 top_number 变量,并且迭代能正常处理这个数字。

f、使用range函数进行迭代

可以使用 range函数来创建一个连续的数字列表,而不是将数据列表中的所有数据都列出来。range函数非常适合在列表中使用。

range函数不是一个真正的函数。它实际上就是一种数据类型,表示不可以改变的数字序列。当然,现在当它是一个函数就行啦!为了在循环中使用range函数,可以如下所示,用它替换数字列表。括号中的一个数字叫做停止数字。在这个例子中,停止数字是5。注意数字的范围是开始于0然后到4结束。

#在for循环中使用range函数for the_number in range(5):    print(the_number)

这里写图片描述
使用range函数将会创建这样一个数字列表:[0,1,2,3,4]。默认情况下range函数生成从0开始到停止数字之间的所有数字的一个列表。因此,停止数字是5,那么range函数会将减1,即在4时停止产生数字。

注意:range函数只接受整数作为参数,不接受浮点数或者字符串。
可以通过包含一个起始数字作为参数,从而改变range的行为。该语法如下:

range(start , stop)

如下代码所示:
这里写图片描述
变量可以用于range函数中设定范围的地方,下列代码中展示了如何在range中使用变量
这里写图片描述

注意:可以使用数学表达式作为起始数字或者停止数字。例如,想要在循环中使用数字1~5,可以使用range(1,5+1)作为range语句,会很直观的看到range函数停在哪个数字。

要改变过range函数生成数字列表的增量,可以给range函数增加一个步进参数,默认情况下,range函数对列表中的数字递增1.通过添加步进参数,使用range(start ,stop, step)的格式,也可以修改增量,在下列代码中就是将增量从默认的1改成2。
这里写图片描述

也可以使用range函数创建一个递减的数字列表。通过将步进设置成负数来达到这个效果。当然需要非常小心的指定起始数字和结束数字。下列的代码与上面的代码出现了同样的结果,只不过顺序是相反的,注意两者之间的range函数的参数的不同。
这里写图片描述

原创粉丝点击