python - 解释 Python 文档第 4.4 节
问题描述
我正在浏览 Python 文档,无法理解第 4.4 节中发生的事情
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
else:
print(n, 'is a prime number')
我遇到的主要问题是了解在这些循环的第一次迭代中分配给 n 和 x 的内容(也许我不完全理解嵌套循环),但我假设在第一次迭代中我们应该得到类似的东西:
for 2(n) in range(2,10):
for 2(x) in range(2, 2(n)):
if 2 % 2 == 0
但这没有发生(我知道 2 是一个素数),但我不明白为什么这不是发生的行为。提前感谢帮助!
解决方案
您的困惑不是嵌套循环,而是range
函数。
range(2, 2)
是一个空范围,因为它不包括端点。
举例说明:list(range(3)) == [0, 1, 2]
。
注意:当迭代一个空范围时,什么也没有发生。因此,例如,以下代码不会产生错误或打印任何内容:
for i in range(0):
print('Nothing here')
raise ValueError
因此,当n
为 2 时,for 循环for x in range(2, 2)
什么也不做。x
不取值None
或任何其他值。如果您尝试将空范围转换为 a list
,它将简单地返回[]
空的list
。
for
循环对某个集合中的每个元素执行一组操作一次。当集合为空或有 0 个元素时,该组操作执行 0 次。
推荐阅读
- xcode11 - 存档卡在 Facebook 登录——Xcode 11、Swift 5、macOS Catalina
- c++ - 如何让程序只运行用户输入的数字?
- c++ - 无法调用 C++ 函数
- xslt - 如何在 xslt 中使用日期返回日期
- python - dataOutput.writeUTF Python 等效项
- mysql - 如何在MySQL中特定字符之后和特定字符之前获取字符串?
- three.js - 如何在三个 JS 中将相机在左、右、顶和底侧旋转 90 度
- eclipse - Eclipse 在发布到 WebSphere 时未从 EAR 中读取使用 Maven 编译的 Web 模块值的正确上下文根
- google-app-engine - 在 GCP 上,有没有办法配置具有多区域可用性的 App Engine + Cloud Datastore 应用程序?
- ant - 如何在 JMeter 测试计划的 ant 报告中获取断言结果