首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python基础教程 跳出循环

5.5.5 跳出循环

通常,循环会不断地执行代码块,直到条件为假或使用完序列中的所有元素。但在有些情况下,你可能想中断循环、开始新迭代(进入“下一轮”代码块执行流程)或直接结束循环。

1. break

要结束(跳出)循环,可使用break。假设你要找出小于100的最大平方值(整数与自己相乘的结果),可从100开始向下迭代。找到一个平方值后,无需再迭代,因此直接跳出循环。

from math import sqrt

for n in range(99, 0, -1):

root = sqrt(n)

if root == int(root):

print(n)

break

如果你运行这个程序,它将打印81并结束。注意到我向range传递了第三个参数——步长,即序列中相邻数的差。通过将步长设置为负数,可让range向下迭代,如上面的示例所示;还可让它跳过一些数:

>>> range(0, 10, 2)

[0, 2, 4, 6, 8]

2. continue

语句continue没有break用得多。它结束当前迭代,并跳到下一次迭代开头。这基本上意味着跳过循环体中余下的语句,但不结束循环。这在循环体庞大而复杂,且存在多个要跳过它的原因时很有用。在这种情况下,可使用continue,如下所示:

for x in seq:

if condition1: continue

if condition2: continue

if condition3: continue

do_something()

do_something_else()

do_another_thing()

etc()

然而,在很多情况下,使用一条if语句就足够了。

for x in seq:

if not (condition1 or condition2 or condition3):

do_something()

do_something_else()

do_another_thing()

etc()

continue虽然是一个很有用的工具,但并非不可或缺的。然而,你必须熟悉break语句,因为在while True循环中经常用到它,这将在下一小节讨论。

3. while True/break成例

在Python中, for和while循环非常灵活,但偶尔遇到的一些问题可能让你禁不住想:如果这些循环的功能更强些就好了。例如,假设你要在用户根据提示输入单词时执行某种操作,并在用户没有提供单词时结束循环。为此,一种办法如下:

word = 'dummy'

while word:

word = input('Please enter a word: ')

# 使用这个单词做些事情:

print('The word was', word)

这些代码的运行情况如下:

Please enter a word: first

The word was first

Please enter a word: second

The word was second

Please enter a word:

这与你希望的一致,但你可能想使用单词做些比打印它更有用的事情。然而,如你所见,这些代码有点难看。为进入循环,你需要将一个哑值(未用的值)赋给word。像这样的哑值通常昭示着你的做法不太对。下面来尝试消除这个哑值。

word = input('Please enter a word: ')

while word:

# 使用这个单词做些事情:

print('The word was ', word)

word = input('Please enter a word: ')

哑值消除了,但包含重复的代码(这样也不好):需要在两个地方使用相同的赋值语句并调用input。如何避免这样的重复呢?可使用成例while True/break。

while True:

word = input('Please enter a word: ')

if not word: break

# 使用这个单词做些事情:

print('The word was ', word)

while True导致循环永不结束,但你将条件放在了循环体内的一条if语句中,而这条if语句将在条件满足时调用break。这说明并非只能像常规while循环那样在循环开头结束循环,而是可在循环体的任何地方结束循环。 if/break行将整个循环分成两部分:第一部分负责设置(如果使用常规while循环,将重复这部分),第二部分在循环条件为真时使用第一部分初始化的数据。

虽然应避免在代码中过多使用break(因为这可能导致循环难以理解,在一个循环中包含多个break时尤其如此),但这里介绍的技巧很常见,因此大多数Python程序员(包括你自己)都能够明白你的意图。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180919G0DNK200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券