geekdoc-python-zh/docs/pythonland/11.md

8.3 KiB
Raw Permalink Blame History

Python For 循环和 While 循环

原文:https://python.land/introduction-to-python/python-for-loop

我们学习了如何用条件语句 if 和 else 来改变程序的流程。另一种控制流程的方法是使用 Python for-loop 或 Python while-loop。本质上循环允许你重复一段代码。

目录

Python For-loop

在 Python 中有两种创建循环的方法。我们先来看看 Python 的 for-loop。for 循环遍历您提供给它的对象的各个元素。如果这听起来很难,一个例子将有望澄清这一点:

>>> for letter in 'Hello':
...     print(letter)
... 
H
e
l
l
o

我们在这里偶然发现了两个需要解释的概念:可迭代性和对象。

Iterable

An iterable is an object in Python that can return its members one at a time.

正如您在示例代码中看到的,一个文本字符串是可迭代的。大多数 Python 的数据类型在某种程度上都是可迭代的。如果你想知道所有的基本细节,请前往关于迭代器的页面。如果您是编程新手,我建议您继续阅读这里的内容,稍后再讨论迭代器。

我们需要解决的下一个问题是:对象。这是一个很大的主题,在本教程中有自己的章节: Python 类和对象。你现在不需要学习它来理解 Python for-loops。知道 Python 中的一切都是对象就够了,对象有一定的类型和一定的属性。可迭代是这些属性之一。

所以我们知道 for 循环可以循环遍历 iterable 对象。通过逐个返回其成员,使其在一个变量(在上面的例子中是变量letter)中可用,您可以用 for 语句循环遍历 iterable 的每个元素。

Python 中 for 循环的通用模板是:

for <variable> in <iterable>:
    ... do something with variable

在每次迭代中,来自iterable的一个元素被分配给variable。这个变量存在,并且只能在循环内部使用。一旦没剩下什么,循环就停止,程序继续执行下一行代码。

Python for 循环和列表

这是研究新数据类型的理想时机:列表。Python 列表可以包含零个或多个对象。这是 Python 编程中经常使用的数据类型。在其他编程语言中,通常没有列表这样的东西。大多数语言都提供数组,但是数组只能包含一种类型的数据。

Python 也有数组,但我们不会在本课程中讨论它们。简而言之:数组只能包含一种类型的数据(比如数字),但是它们在存储数据方面更有效。另一方面,列表可以混合存储所有类型的数据,非常灵活,但会牺牲一些性能。关于列表的详细解释,你可以阅读我关于 Python 列表的文章。如果你是初学者,我建议你继续阅读。

列表就像字符串一样,是可迭代的;因此,它们与 for 循环配合得非常好:

>>> mylist = [1, 'a', 'Hello']
>>> for item in mylist:
...     print(item)
... 
1
a
Hello

让我们再试一次,但这一次是在一个互动的面包屑中,所以你可以玩它:

https://crumb . sh/embed/jcfk 2 va 3 vlb

有几点需要注意:

  • 我们用引号创建列表。
  • 它的内容是您喜欢的任何类型的对象,用逗号分隔,它们不需要属于同一类型。
  • 我们也可以手动访问列表中的单个元素。

Thank you for reading my tutorials. I write these in my free time, and it requires a lot of time and effort. I use ads to keep writing these free articles, I hope you understand! Support me by disabling your adblocker on my website or, alternatively, buy me some coffee. It's much appreciated and allows me to keep working on this site!

一个列表可以包含我们到目前为止看到的所有类型:数字、字符串、布尔值,甚至其他列表。事实上,如果你愿意,你可以创建一个列表列表!正如您在交互式示例中看到的,我们还可以访问列表中的单个元素。记住在计算机科学中,我们从 0 开始计数。所以mylist[0]给我们第一个元素,mylist[1]给我们第二个元素,以此类推。

以下是您可以在 REPL 或上面的交互式代码示例中尝试的一些事情:

>>> mylist = [1, 2, 'Hello', ['a', 'b'] ]
>>> mylist[0]
1
>>> mylist[0] + mylist[1]
3
>>> mylist[2]
'Hello'
>>> mylist[3][0]
'a'

从上一个例子中,您可以看到如何访问嵌套列表。关于 Python 列表的广泛的教程可以在后面的 Python 教程中找到。

Python While-loop

虽然 Python 中的 for 循环有点难以理解,但是因为有了像 iterabilityobjects 这样的新概念While 循环实际上要简单得多!它的模板如下所示:

while <expression evaluates to True>:
    do something

你应该这样理解:“当这个表达式的值为True时,继续做下面的事情”。

让我们来看一个真实的例子:

>>> i = 1
>>> while i <= 4:
...     print(i)
...     i = i + 1
... 
1
2
3
4

我们看到在while语句之后有一个表达式:i <= 4。只要这个表达式的值为Truewhile 循环内部的块就会重复执行。

在上面的例子中,我们从i = 1开始。在循环的第一次迭代中,我们打印i并增加 1。只要i小于或等于 4这种情况就会一直发生。print 语句的输出确认这个循环运行了四次。

这里有一个互动的例子,让你自己尝试一下:

https://crumb.sh/embed/itwRMBZbEoY

Python while 循环

无限循环

有时你希望你的软件继续运行。在这种情况下,无限循环会有所帮助。让我们用 Python 创建这样一个无限循环:

>>> while True:
...     print("Help I'm stuck in a loop!")
... 

为什么这是一个无限循环请记住while 接受一个表达式,只要该表达式的值为True,就一直重复代码。因为非常简单的表达式'True'总是True,这个循环永远不会停止。

走出无限循环

使用 while 循环,很容易出错并发现自己陷入了一个无限的 while 循环。这意味着由于某种原因,表达式永远不会计算为 False。它发生在我们最好的人身上。同时按下 control + c 可以脱离这种情况。既然知道了如何故意制造无限循环,那就人为制造这样一种情况吧。点击控制+ c 停止以下循环:

>>> while True:
...     print("Help I'm stuck in a loop!")
...

输出将如下所示:

Help I'm stuck in a loop!
Help I'm stuck in a loop!
Help I'm stuck in a loop!
Help I'm stuck in a loop!
Help I'm stuck in a loop!
Help I'm stuck in a loop!^C
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
KeyboardInterrupt

如果你仔细观察,你会看到错误前的字符^C,意味着control + c在该点被按下。这个组合键会让你摆脱程序无限期运行的大多数情况,所以记住它是有好处的!

无限循环在 for 循环中不太常见,因为大多数可迭代对象会在某个时候用完要迭代的元素。然而,如果你发现自己陷入了一个无限的 for 循环,你可以用同样的技巧来摆脱它。

更多类型的循环

在本教程的后面,您还将了解到 Python 列表理解。列表理解是 Python 中一个强大的构造,我们可以用它来基于现有的列表创建一个列表。如果您是编程新手,您应该先学习其他基础知识,不过我建议您继续学习下一部分。