admin管理员组文章数量:1029183
Python 的 for
Python 支持 for-else 循环结构,虽然不太为人所知,但非常实用。如果你使用过 Python 编程,你可能使用过 for
循环来遍历列表等可迭代对象中的元素。但对于某些用例,将 for 循环与 else
子句结合使用可能更有帮助。在本教程中,我们将通过编写几个示例来学习如何使用 for-else 循环,以了解它们的工作原理。
在 Python 中, for-else
循环是一种将 for
循环与 else
子句结合的构造。循环体通常检查条件。如果条件是 True
,则控制将跳出循环。只有当 for
循环在未遇到 break
语句的情况下正常完成时, else
块才会执行。
让我们看看一个通用的 for-else
循环构造:
python 代码解读复制代码for item in iterable:
# loop body
if condition:
break
else:
# else body
这里是如何工作的分解:
for
循环遍历iterable
中的每个项目。- 如果
condition
是True
并且控制从循环中跳出,则跳过else
块。 - 如果
for
循环遍历iterable
中的所有项目——没有遇到跳出循环的条件——则执行else
块。
示例 1:寻找素数
让我们使用 for-else
循环来检查一个数是否为素数。如您所知,一个数是素数,如果它只能被 1 和它本身整除,并且没有其他因数。
看下面的代码片段:
代码语言:javascript代码运行次数:0运行复制python 代码解读复制代码import math
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(math.sqrt(n))+ 1):
if n % i == 0:
print(f"{n} is divisible by {i}. Not a prime number.")
break
else:
# This block executes if the loop did not encounter a break statement
print(f"{n} is a prime number.")
return True
在这里, is_prime()
函数首先检查输入数字 n
是否小于或等于 1。如果是,则返回 False
,因为素数都大于 1。记住,最小的素数是 2。
我们使用 for
循环遍历从 2 到 n
的平方根(包含)的数字范围。
- 如果
n
能被这个范围内的任何i
(2,√n
)整除,那么n
就不是质数,因为我们已经找到了一个因子。函数会打印一条消息并跳出循环。并且跳过else
块。 - 如果循环在未找到任何因子——未遇到
break
语句的情况下完成——则执行else
块。函数打印出n
是一个质数,并返回True
。
您可以通过几次函数调用验证 is_prime()
函数是否按预期工作:
python 代码解读复制代码# Test with a non-prime number
is_prime(10)
# Output: 10 is divisible by 2. Not a prime number.
# Test with a prime number
is_prime(13)
# Output: 13 is a prime number.
关于检查素数的笔记
你可能会遍历从 2 到 n
的所有数字来检查是否有因数。但实际上,遍历到 n
的平方根就足够了。为什么?
回想一下,如果 p
是因数,你总能找到一个 q
,使得 p x q = n
:
- 如果
n
是一个完全平方数,那么p = q
。 - 如果
n
不是完全平方数,那么你有以下情况。如果p
小于√n
,那么q
大于√n
。并且如果q
大于√n
,那么p
小于√n
。
Python 的 for
Python 支持 for-else 循环结构,虽然不太为人所知,但非常实用。如果你使用过 Python 编程,你可能使用过 for
循环来遍历列表等可迭代对象中的元素。但对于某些用例,将 for 循环与 else
子句结合使用可能更有帮助。在本教程中,我们将通过编写几个示例来学习如何使用 for-else 循环,以了解它们的工作原理。
在 Python 中, for-else
循环是一种将 for
循环与 else
子句结合的构造。循环体通常检查条件。如果条件是 True
,则控制将跳出循环。只有当 for
循环在未遇到 break
语句的情况下正常完成时, else
块才会执行。
让我们看看一个通用的 for-else
循环构造:
python 代码解读复制代码for item in iterable:
# loop body
if condition:
break
else:
# else body
这里是如何工作的分解:
for
循环遍历iterable
中的每个项目。- 如果
condition
是True
并且控制从循环中跳出,则跳过else
块。 - 如果
for
循环遍历iterable
中的所有项目——没有遇到跳出循环的条件——则执行else
块。
示例 1:寻找素数
让我们使用 for-else
循环来检查一个数是否为素数。如您所知,一个数是素数,如果它只能被 1 和它本身整除,并且没有其他因数。
看下面的代码片段:
代码语言:javascript代码运行次数:0运行复制python 代码解读复制代码import math
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(math.sqrt(n))+ 1):
if n % i == 0:
print(f"{n} is divisible by {i}. Not a prime number.")
break
else:
# This block executes if the loop did not encounter a break statement
print(f"{n} is a prime number.")
return True
在这里, is_prime()
函数首先检查输入数字 n
是否小于或等于 1。如果是,则返回 False
,因为素数都大于 1。记住,最小的素数是 2。
我们使用 for
循环遍历从 2 到 n
的平方根(包含)的数字范围。
- 如果
n
能被这个范围内的任何i
(2,√n
)整除,那么n
就不是质数,因为我们已经找到了一个因子。函数会打印一条消息并跳出循环。并且跳过else
块。 - 如果循环在未找到任何因子——未遇到
break
语句的情况下完成——则执行else
块。函数打印出n
是一个质数,并返回True
。
您可以通过几次函数调用验证 is_prime()
函数是否按预期工作:
python 代码解读复制代码# Test with a non-prime number
is_prime(10)
# Output: 10 is divisible by 2. Not a prime number.
# Test with a prime number
is_prime(13)
# Output: 13 is a prime number.
关于检查素数的笔记
你可能会遍历从 2 到 n
的所有数字来检查是否有因数。但实际上,遍历到 n
的平方根就足够了。为什么?
回想一下,如果 p
是因数,你总能找到一个 q
,使得 p x q = n
:
- 如果
n
是一个完全平方数,那么p = q
。 - 如果
n
不是完全平方数,那么你有以下情况。如果p
小于√n
,那么q
大于√n
。并且如果q
大于√n
,那么p
小于√n
。
本文标签: Python 的 for
版权声明:本文标题:Python 的 for 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747556143a2175640.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论