方法1:
n = 6
for i in range(2, n):
if n%i==0:
print 'Not Prime Number'
break
else:
print 'Prime Number'
输出:
Not Prime Number
方法2:
n = 6
for i in range(2, n):
if n%i==0:
print 'Not Prime Number'
break
print 'Prime Number'
输出:
Not Prime Number
Prime Number
我想知道“方法1”绝对正常,但是缩进不在if语句下,那么它如何正常工作?谁能用一个简单的例子对此进行详细说明? 注意:这个问题是面试官问的
答案 0 :(得分:4)
方法1使用else
循环的可选for
子句。该子句在循环正常完成时执行-即未调用break
。
有关其他详细信息,请参见the documentation。
答案 1 :(得分:1)
在某些情况下,您可以使用for / else,while / else,if / else。例如: 示例1:
for i in range(5):
print(i)
else:
print('hello world')
输出: 0 1个 2 3 4 你好世界
如何理解?很简单,您有一个“ for”循环,该循环将通过0到4。但是当循环结束时会发生什么?好吧,这是else语句进入的时候。因为您写的比结束时要打印'hello world'。
诀窍是查看缩进位置。在前面的示例中,else缩进与for循环匹配,因此它将在循环完成时运行。
示例2:
for i in range(5)
if i < 3:
print(i)
else:
print('hello world')
输出: 0 1个 2 你好,世界 你好世界
查看else的缩进与if语句如何匹配,以便当if语句为false时它将运行,那么i大于3。
答案 2 :(得分:1)
Python for
具有else:
的情况,该情况在循环结束时执行而没有break
(正常的for
循环执行)。
在正常执行for
循环时,当迭代器没有更多元素时,即,迭代器上的next()
失败时,循环完成。在这种情况下,将执行else
的{{1}}部分。
for
假设您使用for x in range(5):
print(x)
else:
print('Loop over without break!') # This line is printed.
语句突然停止了循环,退出了循环,因此条件不能评估为false,并且您从不运行break
子句。
else