Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这个';对于';如果函数用于';对于';环_Python_For Loop - Fatal编程技术网

Python 这个';对于';如果函数用于';对于';环

Python 这个';对于';如果函数用于';对于';环,python,for-loop,Python,For Loop,我正在使用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:

我正在使用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之间的素数。除此之外,我对这个例子有点迷茫。文档越来越冗长,我几乎无法理解其中的大部分内容。我只是希望有人能用稍微简单一点的术语解释(2,10)范围内的n:

意味着n将采用2-10的值,一次一个,每次采用一个新值时,运行内部循环

内环

用于范围(2,n)内的x:

意味着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

当您为
循环嵌套
时,内循环将在外循环的每一轮中重复。例如,它是这样开始的:

for x in range(2, 2):
然后进行到

for x in range(2, 3):

等等。对于外循环的每一步,每个内循环都会增长一步。因为
中断
在内环内,所以无论内环
中断
多少次,外环都将完整运行

First things Firstfor不是一个函数,而是一个结构。另外,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

等等


只需添加python,与其他流行语言不同,for循环不会增加变量。相反,它只是一次从您指定的值列表/数组中选择一个值(例如:range(2,10)),在本例中是一个数组[2 3 4 5 6 7 8 9]

我绝对同意@Josh和@g.d.d.c的答案,但要理解
循环构造的
,以及它的真正功能,还需要解释更多的内容。但要想了解这一点,我只需要谈一点什么是iterable对象


Python的
for
循环与另一种语言(例如Java)的工作方式不同。此处的
for
循环需要可以迭代的内容。这意味着三种数据类型(通常):列表、元组和字典。这三个都有可以迭代的值,因此,
for
循环可以很好地使用它们

range(a,b,s)
函数将生成[a,b]范围内的值列表,可以选择使用跳过值s。由于列表是可编辑的,我们可以将其与
for
语句一起使用

当您为
语句嵌套
时,您正在执行一个嵌套循环。中距离最远的
for
语句将运行得最频繁。您可以将嵌套循环与模拟时间段进行比较-秒针是
的最内层,分针是高于该值的一个级别,小时数为nd是高于该值的一个级别

现在,我们来看这个例子。在外部
for
循环中,我们将从iterable列表中获得的每个值绑定到一个变量——在本例中为
n
。当我们开始循环时,
n==2
。我们来到内部
for
循环,注意我们将变量
x
绑定到列表
[2,2)
,它将为空-在
范围()中具有相同的起点和终点不会返回任何内容。因此,第一次通过时,我们将跳过内部循环

完成内部级别循环后,我们返回并重复外部循环。现在,
n==3
。我们进入内部循环,并将
x
绑定到iterable范围内的第一个值
[2,3)
,这将是
2
。然后我们执行内部操作,正如
if
语句所预期的那样

当我们最终到达一个点时,
n==9
(最大值;记住,由于范围限制,
n
在本例中永远不能等于10),
x
将绑定到iterable范围的第一个值
[2,9)
。因此
x
将从2开始,然后移动到3,依此类推


如果您想进一步了解
for
循环的工作原理,那么我建议您深入研究,甚至引用。

Gee,我只是键入了一些类似的内容。我不会说
n
是递增的,因为
for
循环不会递增值;它只会移动到集合中的下一个元素le(在本例中,它恰好是n+1)。我很抱歉。正如我所说,我在术语方面遇到了很多问题。如果您觉得python文档很难理解,您应该能够找到更容易理解的内容。@Ankit:虽然我相信您是在尽力提供帮助,但在这种情况下,您对术语的修改掩盖了Grant需要纠正的误解的一部分。您的在代码段中添加注释也不是一个好的编辑方法;在答案中发布注释会更合适。@JoshCaswell对不起,是不是
n=4
x=2,3