疑问:python中为什么要有for else这种感觉比较奇怪的语句呢?
python之父如是回答:Although that way may not be obvious at first unless you’re Dutch.”
在我们的实际开发中也许真的用不上这种语句,但是如果强行的如此理解怎么样?小领导给我们个期限,让我们在这个期限内完成一个需求,ok,这个期限就是我们的循环条件,我们完成了这个需求,那好,就break,也就是这个任务完成了,不需要在继续循环下去了。如果deadline到了,我们没有完成任务,糟了,免不了小领导的一顿臭骂,甚至惩罚,也就是else了,天呐但愿这种事不要发生。
接下来我们看下实例代码:输入一个数字判断这个数字是否是质数。
如下:(质数是大于1的自然数,除了1和本身不能被其它自然数整除的数)。
num = int(input("请输入一个数字"))
if num > 1:
for i in range(2,num):
if (num % i) == 0:
print("不是质数")
break #break不能去掉,否则会进入else逻辑
else:
print("是质数")
else:
print("不是质数")
当我们输入2,打印出是质数,4打印出不是质数。但是当我们把break这行注释掉会出现什么情况呢?
如下打印:
所以看结果我们知道for else就是一个整体循环,要想不走进else语句中,只有在for循环中break中断才可。针对于循环期限内做事,没有做到才走else的逻辑业务比较适合。
总结:for else是整体循环,for中没做成事,会走else默认给个结果,而break … else … 才是两个互斥的语句,for中如果没有break就不管for中成没成事,else都会走进去,这一般会引起逻辑上的bug。