虽然几乎所有编程语言都存在循环,但是Python循环函数是最简单的主机之一,因为它几乎像简单的英语一样读取。在本教程中,我们将涵盖每个方面循环。我们将向您展示如何使用各种示例使用它,以便您可以开始了解其使用语言的使用情况。我们还将进入一些常见的Python命令和功能加入argv在实践中经常使用的循环。有关的更深入课程循环和其他Python入门编程概念,查看本课程如何从头开始学习Python

完整的Python大师课程:从零开始学习Python

最后更新2021年3月

  • 402课
  • 所有级别
4.4 (6036)

Python入门课程,学习Python编程,Python Web框架Django, Flask, Web抓取等等。|由Ashutosh帕瓦尔

探索课程

为Python设置计算机

尝试Python代码的最简单方法是使用基于Web的IDE和编译器。我们使用Repl。Python 3中的it对于我们的例子,尽管你很欢迎下载Python并使用您喜欢的IDE/编译器在Windows或Mac机器上本地运行它。

什么是Python ?循环?

一个循环用于重复代码块(封装在循环)n的次数。的循环用于在一个列表上重复相同的操作。它是众多Python迭代器之一。的基本语法循环是这样的:

物品列表:

做动作物品

翻译成普通英语,这将是:“对于列表中出现的每个项目,对序列中的每个项目执行一个操作。”

如果您已经将上述代码输入到Python编辑器并运行它来查看结果,那么您会注意到它无法编译。为什么?因为你还没有定义你的清单单词“list”本身是内置类型(像int或bool)。' Do action with '是明文,没有定义。以上是你应该遵循的简单结构循环。

这里有几件事需要注意:

你已经使用在你自己的生活中广泛循环。举个例子,假设你要去杂货店购物。你走进杂货店,推着购物车,拿出你的购物清单。当你走过过道时,你拿出购物清单上的每一件商品,把它放进购物车。在某种程度上,你使用了循环-每一个项目在你的购物清单,你拉出来,并保持在你的购物车。

但足够的理论。让我们看看循环使用一个实际的例子。注意,散列后面的文本是未编译的注释。

示例1

x =[2, 8, 512] #创建列表

这里,i是用来引用列表中单个项目的变量

打印(我)

将此放入编码窗口后,单击Run按钮。输出:

linux上的Python 3.7.4 (default, jul9 2019, 00:06:43) [GCC 6.3.0 20170516

2

8

512

注意,您需要使用圆括号来对每个项目执行打印功能。

让我们来看另一个使用Python for循环的例子范围:

示例2

For I in range (0,10):

打印(我)

输出:

您可以看到如何使用上面的示例打印指定范围内的数字列表。您还可以使用它来做一些简单的数学运算,并打印出偶数或奇数的列表,我们将在后面的示例中看到。

循环vs。循环

Python支持两种循环-。它们在语法和工作方式上非常相似,但在一个关键方面有所不同:a循环将无限地运行,只要满足条件即可。

一个循环的语法如下:

状况:

做某事

这是一个示例打印了一系列数字:

我= 0

当我< 100时:

i = i + 1 #该语句最终需要使while循环条件为假

打印(我)

输出:

但是,如果你要删除'i = i + 1'部分,那么条件永远不会退出,因为数量永远不会达到100。这些类型的循环不断地循环,程序最终可能会崩溃。这叫做无限循环

立即尝试 - 删除i = i + 1份并运行程序。你应该看到这样的东西:

因为循环会无限地运行,直到条件变为false,它们通常会导致程序抛出错误或崩溃。这就是为什么你应该尝试使用循环,而不是无论何时可以循环,因为它更难地制作这些编码错误。

循环和列表

最常见的用法循环是从列表中提取信息。

如您所知,列表基本上是项或数据的集合。列表本质上只是六种不同类型的序列在Python中使用。然而,在本教程中,我们将只关注两种类型的序列:列表元组

列表的基本语法如下:

List_name = [list_item_1, list_item_2, list_item_3]

本质上,列表是一个包含多个数据块的变量。

让我们来看一个例子:

Odd_numbers = 1, 3, 5, 7, 9, 11, 13

它也可以保持文本字符串:

名字=[“约翰”,“罗杰”,“本”,“乔治”]

文本字符串和数字可以在同一列表中进行:

names_numbers =(“本”,“约翰”,1日2时,“乔治”,3]

打印上述列表将生成完整的列表:

元组

一个元组就像一个包含不可变元素的列表,也就是说,一个列表元组的内容不能改变,而你可以改变列表中的项。不像普通列表那样使用方括号,元组位于圆括号()中。基本语法如下:

Tuple_name = (tuple_item_1, tuple_item_2, tuple_item_3)

像列表一样,元组可以保存文本字符串、数字或两者都包含(和/或其他超出本教程范围的项):

Even_tuple = (2, 4, 6, 8, 10)

names_tuple =(“John”,“Ben”,“George”)

names_and_numbers =(“约翰”,1,“本”,2,“乔治”,3)

与列表一样,打印一个元组将整个元组复制:

但是,如果想打印列表或元组中的单个项,该怎么办呢?

这就是循环可以派上用场。

循环然后循环列表中的单个项目并再现结果。您不仅可以打印,还可以在列表项(例如数学方程)上执行各种不同操作,并添加/删除项目。

让我们来看看一些例子来了解这是如何工作的:

从列表中打印项目

List1 = [1, 3, 5, 7, 9, 11]

对于list1中的项目:

打印(项目)

这将打印出列表中的每一项:

For I in (1, 2, 3, 4, 5, 6)

打印(我)

输出:

修改列表中的项

我们可以通过对列表项执行数学运算来修改它们。下面,我们将取上面的奇数列表,并给每个数字加1:

List1 = [1, 3, 5, 7, 9, 11]

对于list1中的项目:

物品=物品+ 1

打印(项目)

注意:我们可以使用简写' item += 1 '来代替' item = item + 1 '。

结果:

将项目添加到列表中

如果想向列表中添加项目,该怎么办?为此,我们可以使用append ()方法。

这里有一个例子:

List1 = [1, 2, 3, 4, 5, 6, 7]

List2 = [8,9,10]

list1.append(用于)

然而,当打印list1时,会看到如下输出:

你能发现问题吗?的append ()方法将list2中的所有单独项目视为一个项目:一个列表作为原始列表中的一个项目。8、9、10不是作为单独的列表项处理,而是被集中在一起。

如果使用print(list1[7])只输出列表中的8个元素,就可以看到这一点。你可以看到[8,9,10]被视为单个元素。

那么如何单独添加列表项呢?

通过使用当然,循环。

List1 = [1, 2, 3, 4, 5, 6, 7]

List2 = [8,9,10]

遍历list2中的单个元素

list1.append(i) #将这些单独的元素添加到list1

打印(list1)

这是list1现在的样子:

因此,我们将单独遍历list2中的所有元素并将它们添加到list1中,而不是将整个list2添加为list1中的一项。这只是for循环和列表的众多用法之一。

注意:属性将单个元素添加到列表中延长()方法也是如此。这意味着您不必运行A for循环以获取与上面相同的结果,只需使用list1.extend(list2)。

使用多个列表

到目前为止,我们用过单链表循环。但是如果我们想处理多个列表——也就是说,一个列表中的一个列表呢?

在这种情况下,我们将不得不使用嵌套循环。我们将讨论稍后详细嵌套循环。目前,我们将说明如何使用多个列表,示例:

假设我们有一个名字列表,一个数字列表,一个国家列表:

list1 =[[“马特”、“本”、“杰瑞”],[1、2、3、4、5],[“丹麦”、“英国”、“苏格兰”]]

如果我们用正常的用于打印列表项的循环方法,我们得到以下结果:

对于list1中的I:

打印(我)

但由于我们想从这些列表中打印单个物品,我们必须使用另一个循环,像这样:

对于list1中的I:

对于i中的x:

打印(x)

这就是所谓的嵌套循环。注意,在循环中添加循环时需要一个额外的选项卡。代码本身意味着您正在指示Python遍历每个列表。输出是这样的:

我们将回到嵌套循环之后。现在,您应该知道要处理列表中的列表,您需要多个列表循环。

使用范围循环

内置的range ()方法在使用循环时特别有用。的range ()方法定义了必须通过这些项执行特定操作的一组项。

和往常一样,理解这一点的最好方法是通过一个例子:

让我们说我们想打印前10个数字。最简单的方法是使用a循环和range ()方法:

For I in range(0,10):

打印(我)

输出:

range ()方法应包括范围的上边界和下边界。如果您只使用一个值(例如,在范围内(10)),Python将自动假设计数从0开始。但是,很好的做法是在代码中包含较低和上限。

注意,这个范围的上界是不是包容性,即在上述例子中,不包括10。

但如果你想计数呢向后?不要担心,您不需要使用复杂的编程技巧来实现它。

值得庆幸的是,range ()Python中的方法内置了一个名为的功能。这是第三个可用于range ()。它不是必须的,但如果使用正确,它是非常有用的。

让我们通过一个例子来看看它是如何工作的:

For I in range(10, 0, -1):

打印(我)

这里,10是起点,0是终点,而-1是步骤。因此,计数将从10降至0。

我们甚至可以把它算作负数:

对于range(10, -10, -1)中的I:

打印(我)

可以是任何东西。让我们用它来数从0到20的所有偶数:

For I in range(0,20, 2):

打印(我)

range ()在处理数字的时候可以派上用场。试着尝试一下,看看你还能想出什么其他类型的序列。

range ()在处理数字的时候可以派上用场。试着尝试一下,看看你还能想出什么其他类型的序列。

使用循环与if - else有条件的陈述

我们已经看到了它的用处循环是可以的,但是你不能真正释放这些循环的力量,除非你在条件语句中使用它们,比如if - else。

if - else语句帮助程序员做出决定并引导程序的流程。为了唤醒你的记忆,以下是最基本的if - else声明看起来像:

如果条件1 = true:

做一点事

elifcondition2 = True:

做一点事

其他:

做一点事

if - else语句结合使用时非常有用循环。有趣的elif中间的单词是“else if”的缩写。

让我们考虑一个例子。假设我们有一个数字列表我们只想在它们是偶数的时候打印它们。一种方法是同时使用两者循环和一个如果声明;这个缺少了其他部分。如果条件满足(i%2等于0),则输出它。

List1 = [1, 2, 3, 4, 6, 8, 12, 5, 17, 19, 20, 25, 28]

for循环遍历列表中的每一项

if语句检查列表项被2除后是否有余数

打印(我)

下面是这个操作的结果:

在后面的例子中,我们将使用循环和if - else语句创建有用的、复杂的程序。

嵌套的循环

嵌套循环基本上是循环中的循环。我们在上面的示例中介绍了一个简单的嵌套循环,如果您还记得的话,就是遍历列表的列表。让我们通过更多的示例进一步深入这个有用的Python特性。

假设你有一个项目列表:

list1 =["汽车","飞机","轮船","自行车"]

要从列表中打印出单个项,可以使用简单的循环:

对于list1中的I:

打印(我)

这将产生以下输出:

但是如果我们再加一个循环到上面的循环?

让我们来看看:

对于list1中的I:

对于i中的x:

打印(x)

基本上,Python将每个单词分解成它的组成字母并打印出来。这指出了Python中的一个重要属性——字符串实际上是单个字符的列表。

重要的是要记住,您可以嵌套任何类型的循环。一个循环可以坐在一个循环,它可以坐在if - else有条件的,等等。

退出一个循环

有时,有必要实现一个故障安全机制,以便在没有满足循环的某些条件时退出循环。这通常是必需的循环,但也可以使用循环。在Python中,正确的方法是使用打破声明。

让我们看看它是如何工作的:

X = range(1, 100)

对于x中的I:

打破

打印(我)

这将不会产生任何输出,因为您已经命令Python在它可以打印任何东西之前中断程序流。

但是,如果在循环之外输入print语句(un缩进),将得到不同的输出。

X = range(1, 100)

对于x中的I:

打破

打印(我)

答案是1。这是因为在中断循环之前,我们只得到range函数中的第一项1。这是另一个经常被放在旁边的有用的陈述打破语句是继续语句,但是,这些超出了本教程的范围(请阅读更多信息的官方文档)。

在下面的例子中,我们将学习如何使用Python循环来创建不同的程序。我们还将学习一些以前没有涉及到的Python命令和特性。

例子

1.使用用户提供的输入创建项列表

这是一个很好的例子,一个简单的,初学者程序使用循环和列表。与任何编程练习一样,在编写任何代码之前写出基本需求是有帮助的。在这个节目中,我们想:

根据这些需求,我们可以收集到需要使用输入()函数收集用户输入,以及append ()向列表中添加元素。

让我们开始吧!

print(" Hello, welcome to the program ")

打印(" This program will ask you to enter the names of places you ' r e been to ")

打印(“在我们开始之前,请输入您要输入的地点数量”)

Number = int(input(" > "))

print(谢谢!)

打印(“我们现在我们会要求您输入您前往的所有地方)

places_旅游=[]#创建一个空列表来保存输入的值

对于range(number)中的I,使用#range(number),因为我们希望限制用户选择的输入数量

place = input(" > ")

places_traveled.append(地方)

print(" Here 's a list of places you 've been to: \n ", places_旅游过的地方)

运行该程序,我们看到:

让我们看一下程序中的一条语句,来解释到底发生了什么。

Number = int(input(" > "))

我们随信附上输入()int ()因为我们想确保输入的值是整数,而不是字符串。尝试再次运行该程序,并在第一次提示时输入一个单词而不是数字。你会得到以下错误:

这是Python告诉你,它期望这里是一个整数,但得到了一个字符串。

那么这段代码呢?

places_traveled = []

是的,你也可以创建空列表!这就是声明空列表的样子,稍后只需将其添加进去。

对于range(number)中的I:

我们没有自己声明范围,而是要求用户输入他们想要输入的项目数量。因此,我们在循环中使用变量之前声明了它。

使用argv

如果我们从命令行运行程序,而不是浏览器内的编辑器,我们可以在代码的开头添加以下内容:

从sys导入argv #import命令用于导入argv或参数变量

脚本,user_name = argv# argv用于提取用户名和程序名

print(" Hello, welcome to %s program, %s " % (script, user_name))

在Repl中这样做。它,按F1,然后选择' Open Shell, '然后在新的控制台区域,输入

python main.py约翰

你可以在这里查看控制台和输出:

这是因为我们在运行时给了程序两个参数:程序名和用户名。让我们来分析一下。

从sys import argv

Argv被称为“参数变量”。它就像一个普通的变量,除了当程序在命令提示符中运行时调用它。如上面的示例所示,当您想输入用户名或程序名时,这可能非常有用。在这个程序中,我们特别使用了argv,因为我们想提取脚本的名称。

脚本,user_name = argv

此行定义了要在程序中使用的双参数变量。脚本是一个内置的方法,提取程序的名称。

试着扩展这个例子

这是一个非常可靠的初学者程序,但是如何改进它呢?下面是一些你可以解决的家庭作业问题:

  1. 我们使用int()来确保输入的是一个数字。但是有没有办法验证输入是否为字符串呢?
    提示:查找isalpha ()在Python中,函数。
  2. 扩展程序以包含多个列表 - 例如,您前往的地方列表和您旅行的人。

2.连接字符串

虽然这个练习只是粗略地使用循环,我们将使用它来介绍其他一些有用的Python函数,即:isalpha (),Len(),加入()

基本要求如下:

以下是完整的程序:

从sys import argv

脚本,user_name = argv

print("欢迎使用%s脚本,%s " % (script, user_name))

打印(" In this program, we 'll ask you to enter a few pieces of text ")

打印(“我们将验证输入是否正确或不”)

print(" We 'll then add your input to an existing list ")

print("最后,我们将以不同的格式显示列表的内容")

打印(“所以让我们开始吧!”)

list1 = []

对于range(3)中的I:

item = input(" Please enter a text item > ")

If len(item) > 0 and item.isalpha():

list1.append(项)

其他:

print("输入无效! ")

打印(“记住只输入文本输入!”)

打印(“这是您的最终列表看起来像”,list1)

打印(“让我们看看列表如何看出不同的格式”)

. join (list1打印(" "))

打印(“ - ”。加入(list1))

. join (list1打印(“…”)

print (. join (list1))”、“

下面是程序的结果:

让我们试着了解这里发生了什么:

If len(item) > 0 and item.isalpha():

这里,我们使用了两个内置的Python函数-Len()isalpha ()检查是否有效输入。Len()返回所提到的变量的长度。在这里,我们希望输入的数据在于至少一个字符长。因此,我们使用len(项)> 0。

isalpha ()是另一个内置的Python函数,可检查变量是否仅包含字母字符。item.isalpha ()本质上的意思是:“只有当输入是字母字符时才继续。”如果它包含任何数字,则移到其他的陈述”。

现在就试一试——重新运行程序,但在第一个提示中使用数字代替。你会看到下面的输出:

的组合Len()isalpha ()非常适合检查用户输入。例如,您可以使用Len()检查web表单中的用户名或密码字段是否为空,或包含太多字符。

示例中下一个有趣的代码是加入():

. join (list1打印(" "))

打印(“ - ”。加入(list1))

. join (list1打印(“…”)

print (. join (list1))”、“

在这里,加入()用于打印以指定格式分隔的列表中的个别项目;一个空格,一些破折号,一些省略号或一个逗号。格式必须包含在引号内才能正确打印。

家庭作业,试着完成以下练习:

  1. 查找两Len()isalpha ()当前官方Python文档。你能想到这两种用法的其他情况吗?
  2. 我们使用加入(),但是还有另一个蟒蛇函数调用split ()它可以用来断开字符串。查找split ()官方Python文档。它有什么不同加入()吗?可能的用例是什么split ()吗?

3.打印前n个数字并检查它们是否是质数

这是一个利用嵌套循环的好例子,如果语句和打破命令。它也使用稀有的对于else.可以用的语句休息。基本要求如下:

基于这些信息,我们可以开始创建我们的程序:

对于range(2,20)中的I:

for x in range(2, i): #使用嵌套循环获得第一个范围内的数字

如果i % x == 0: #检查第一个数是否能被第二个数整除

Print (i, " equals ", x, " * ", i/x)

打破

其他:

Print (i, "是一个质数")

请注意,其他的声明与我们的界限缩进;它不属于如果声明。结果:

对于新手来说,上面的数学运算可能看起来非常复杂,所以让我们把它分解成更容易理解的部分:

对于range(2,20)中的I:

它被用来得到一个数字i,它在2-20之间。

对于范围(2,i)中的x:

这里,我们得到另一个数字x,它位于2和i之间,因此,如果第一个数字i是6,那么这里的范围就是2-6。

如果i%x == 0:

在编程中称为模(或简称模)的百分比符号,用来检查可整除性;它显示了如果i除以x的余数,所以6%2=0,6%3=0,6%4=2,6%5=3,6%6=0。

我们知道,如果一个数有两个以上的因数(其中运算的结果是0),那么它不是素数。在我们的例子中,因为有两种情况结果不是0,所以6不是质数。如果第一个数i,能被第二个数x整除,这意味着它有至少三个因数,自身,1和x。

Print (i, " equals ", x, " * ", i/x)

这是一个简单的打印语句,列出数字i和它的除数x。

打破

我们使用打破这里是因为我们想让程序继续其他的声明而不是经历再循环。如果我们删除打破,我们得到以下输出:

这显然不正确,并非所有这些数字都是素数。

其他:

Print (i, "是一个质数")

这里,我们用了an其他的条款在循环。的其他的条件不限于if - else语句。你可以用a循环,如果您已经使用打破循环。使用其他的本质上告诉Python切换到下面的代码其他的在它遇到一个休息。因此,在上面的例子中,我们指示Python如果第一个数字能被第二个数字整除,就中断代码,并检查下面的代码其他的代替。

作业:回答以下问题:

  1. 用简单的英语,写下Python对代码中的每一行做了什么。
  2. 列出程序“流程”。选一个数字,比如15,然后看看当i = 15时会发生什么。
  3. 查找其他的子句。

常见问题

问:你应该在哪里使用循环,而不是循环?

几乎无处不在。的循环有它的用途,但它也容易抛出错误或给出难以查找的奇怪结果。作为初学者,尽量减少数量在您的程序中循环并坚持下去循环。当然,有些问题是你无法避免使用循环,但如果可能,使用循环——无论您是打印数字列表、处理列表,还是做决策if - else语句。

问:有多少我能嵌套在现有的循环中吗?

你想要多少就有多少(或者项目要求多少)。但就像if - else语句,最好限制一下循环有两层深。如果你深入其中,你就会开始走向“糟糕的实践”领域(如果其他程序员阅读了你的代码,他们就不会再喜欢你了!)。

问:我看到了一个‘通过'命令在一些在线代码。那是什么?

“pass”命令基本上是一个空的占位符。它什么也不做,只是在需要一些代码来确保编译和运行的地方使用——后面要添加实际的代码本身。我们可以继续执行块,而不会导致错误。作为一个例子,看看下面的问题。

两者的区别是什么范围xrange吗?

如果你向上看范围在线,您可能会遇到xrangexrange是Python早期版本中的过时函数。xrange现在已经不存在了,滚进了范围函数在Python 3。

当你使用范围,实际上是创建了一个列表,Python会遍历这个列表。因此,for x in range(0,100)基本上创建了一个从0到100的临时列表。随着循环执行后,Python遍历这个列表中的每个元素。这可能会很慢,特别是在处理一个非常大范围的值时。

与新范围Python 3的能力(什么是xrange在Python 2)中,它可以生成一个可迭代对象,创建范围内所需的数字。理解它是如何工作的需要进入面向对象编程,这完全是一个全新的领域。

您可以测试运行时间范围(或任何其他功能)使用时间模块。要使用此方法,请尝试以下代码:

导入Timeit.

start_time = timeit.default_timer ()

对于范围为(0,200000)的x:

通过

Elapsed = time .default_timer() - start_time

打印(运行)

(注意我们是如何使用'的通过来这里是因为循环需要一个缩进块语法,但程序没有)。

问:词典是什么?

我们还没有提到本教程中的词典。Python词典基本上是Python中的另一种类型的序列。他们喜欢列表,除了他们拥有一个关键和一个价值与它相关联的。你可以把它们想象成真正的英语词典,有单词(键)和与单词相关的意义(值)。

字典的基本语法如下:

Dictionary = {key1: value1, key2: value2, key3: value3}

这里有一个例子:

动物={“兔子”:“胡萝卜”,“牛”:“草”,“狮子”:“肉”}

在这里,'兔子','牛'和'草'是钥匙,而“胡萝卜”,'草'和'肉'是价值观。每个密钥也可以具有多个值:

动物={“兔子”:“胡萝卜”,“白菜”、“黄瓜”),“牛”:“草”,“狮子”:“肉”}

你可以从字典中打印任何特定的值,只要提到它的键:

print(动物(“兔子”))

这将打印('胡萝卜','卷心菜','黄瓜')。

但是如果您想同时打印键和值呢?要做到这一点,你必须使用循环并调用内置函数项目()

对于i, value in animals.items():

打印(我,值)

这里,i和value都是任意占位符变量。你可以使用任何你喜欢的变量。结果是这样的:

字典对于存储数据非常有用。假设有一个字典,它存储了用户的姓名、密码、登录名、年龄和性别,您可以使用它们来提取和显示特定的数据。

在这门课程中,你可以学习更多关于字典和其他中级Python主题的知识Python对初学者

问:我可以从哪里了解更多关于不同Python命令的信息?

学习Python语法和内置功能的最佳地点是通过我们上面提到的官方Python文档来进行。另一种选择是简单地只是谷歌'python + [命令或函数]'。您还可以通过内置pydoc概述特定的Python函数和功能。只需在命令提示符下键入以下内容(确保在首先在代码窗口中运行导入pydoc并运行它):

Python -m pydoc command-name

这里有一个例子open ():

问:我在哪里可以找到Python程序和代码?

编程语言很像实际语言。您可以坐在课堂上,并学习数百个单词和语法规则,但掌握语言的唯一方法是实际使用它在日常生活中,最好是在一个自然所说的国家。相同的规则适用于Python和其他编程语言。在类似的网站上闲逛StackOverflowGitHub了解其他程序员如何使用该语言并访问示例代码。GitHub上有数千个Python代码库和软件源代码,是学习Python语言的好地方。

下一个步骤

现在您已经熟悉了Python中最常用的循环循环。在本教程之后,您的下一步应该是熟悉循环,词典以及最终类似于类和面向对象的编程,以及调试代码的断点。尝试以下其中一些课程开始:

让你的团队。领导行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求一个演示

页面最后更新:2013年12月