我正在使用python文档开始学习所有内容,并在所述'for'循环中引入了带有'for'函数的'for'循环。我做了很多解释,因为我很难跟上术语,所以我只会告诉你:
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'
我理解if / else循环和break语句。我看到它以某种方式生成2到10之间的素数。除此之外,我有点迷失这个例子。文档变得难以忍受,我现在几乎无法理解它。我只是希望有人可以用稍微简单的术语来解释这个问题
答案 0 :(得分:2)
for n in range(2, 10):
意味着n将采用2 - 10的值,一次一个,并且每次采用新值时,运行内部循环。
内环,
for x in range(2, n):
表示x将采用2 - n的值,一次一个,并执行其内部,if / else。
所以外循环从2开始,所以n = 2.内循环从2-n迭代,n = 2,所以2-2,所以一次。
然后控制传递回外部循环,n递增,内部循环现在从2-n执行,n为3.因此x取值2,然后是3,因为n是3,传回外循环,依此类推。
以下是一些流程:
:start outer, n = 2
:goto inner, x will range from 2 - 2, so x = 2, x hits max for the inner loop
:goto outer, n = 3
:goto inner, x will range from 2 - 3, so x = 2, iterate once, x = 3, x hits max for inner loop
:goto outer, n = 4
:repeat
答案 1 :(得分:2)
首先 的第一件事不是函数,而是构造。另外,if / else不是循环而是分支构造
考虑带标签的代码
for n in range(2, 10): # this is the outer loop
for x in range(2, n): # this is the inner loop
#(this is where the code is checking whether n is prime)
if n % x == 0: #checking is x divides n
print n, 'equals', x, '*', n/x
break
else:
print n, 'is a prime number'
接下来,外部 for循环从2到10迭代。循环的每次迭代都有另一个内部 for循环。这个内部循环从2迭代到那个数字并检查是否可以检查变量n(外部循环)是否为素数。
例如:
For the first iteration
n=2
x=nothing
,然后
n=3
x=2
和
n=4
x=2,3
等等。
只是添加python,与其他流行语言不同,for循环不会增加变量。相反,它只是从您指定的列表/数组中一次选择一个值(例如:范围(2,10)在这种情况下是一个数组[2 3 4 5 6 7 8 9]
答案 2 :(得分:2)
我肯定会同意@Josh和@ g.d.d.c的答案,但还需要解释一下,以了解for
循环结构,以及它的功能究竟是什么。但要做到这一点,我必须谈谈可迭代对象是什么。
Python的for
循环与其他语言(例如Java)的工作方式不同。这里的for
循环需要他们可以迭代的东西。这意味着三种数据类型(通常):列表,元组和字典。所有这三个都具有可以迭代的值,因此for
循环可以正常工作。
range(a, b, s)
函数将生成范围[a,b)中的值列表,可选地具有跳过值s。由于列表是可迭代的,我们可以将它与for
语句一起使用。
当您嵌套 for
语句时,您正在执行嵌套循环。最快for
语句将最常运行。您可以将嵌套循环与模拟时间片进行比较 - 秒针是最里面的for
,分针是高于该值的水平,而时针是高于该值的水平。
现在,进入这个例子。在外部for
循环中,我们将从可迭代列表中获取的每个值绑定到变量 - 在本例中为n
。当我们开始循环时,n == 2
。我们来到内部for
循环,注意我们将变量x
绑定到列表[2, 2)
,这将是空的 - 在{{1}中具有相同的起点和终点不返回任何东西。所以第一次,我们会跳过内循环。
一旦我们完成内部循环,我们回来重复外循环。现在,range()
。我们来到内部循环,并将n == 3
绑定到可迭代范围x
中的第一个值,即[2, 3)
。然后,我们按照2
语句的预期执行内部操作。
当我们最终到达if
时的点(最大值;记住,由于范围限制,n == 9
在此示例中永远不能等于10),n
将被绑定到可迭代范围x
的第一个值。因此[2, 9)
将从2开始,然后移至3,依此类推。
如果您想详细了解x
循环的工作方式,我建议您查看list comprehensions,甚至引用Dive into Python's section on lists。
答案 3 :(得分:1)
当你嵌套for
循环时,内循环会在外循环的每一轮中重复。所以,对于你的例子,它是这样开始的:
for x in range(2, 2):
然后进入
for x in range(2, 3):
等等。对于外环的每个步骤,每个内环增长一步。因为break
在内部循环内,所以无论内部循环break
多少次,外部循环都将完整运行。