2

python教程中有一个例子(复制如下),不else应该缩进吗?我运行了代码,但它没有工作,但我缩进了它(else),它工作了。是,我说的对吗?如果文档有误,那么如何将其作为错误报告给 python 文档人员?

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print n, 'equals', x, '*', n/x
...             break
...     else:
...         # loop fell through without finding a factor
...         print n, 'is a prime number'
...
4

3 回答 3

7

请参阅您链接的文档:

循环语句可能有一个 else 子句;它在循环时执行
通过用尽列表(使用 for)或条件时终止
变为假(使用 while),但不是当循环被中断终止时
陈述。这可以通过以下循环来举例说明,该循环搜索
质数:
于 2012-08-30T10:40:09.563 回答
6

Tha示例正在运行并且缩进很好,请看这里:

                                                    # Ident level:
>>> for n in range(2, 10):                          # 0 
...     for x in range(2, n):                       # 1                          
...         if n % x == 0:                          # 2
...             print n, 'equals', x, '*', n/x      # 3
...             break                               # 3
...     else:                                       # 1
...         # loop fell through without finding a factor                        
...         print n, 'is a prime number'            # 2

如您所见,通过遵循以下规则else与第二个相关:for

循环语句可能有一个 else 子句;它在循环因列表用尽而终止时(使用 for)或条件变为假(使用 while)时执行,但不是在循环由 break 语句终止时执行

在该示例中,这意味着如果第二个 for (在第二行中)将完成运行但永远不会运行 break 命令,则将调用 else - 仅当n % x == 0永远不会 eval to 时TRUE

如果(n % x == 0)在任何时候 break 将被调用,第二个 for 将停止,n从第一个 for 将增长 1,(n = n + 1),第二个 for 将再次调用 new n

于 2012-08-30T10:41:07.397 回答
0

这是 Python 的示例for ... else http://psung.blogspot.co.il/2007/12/for-else-in-python.html

它基本上在 for 循环结束并正常终止后调用else部分中的代码(无论如何都不会中断)

于 2012-08-30T10:40:09.393 回答