之前编判断质数的一个程序,每次看时,都看懂了,然后自己编时总会出错,
比如老是编成
for num in range(2, 101): for i in range(2, num): if num % i == 0: j = num/i print(str(num) + '=' + str(i) + '*' + str(j)) break else: print(str(num) + 'is a prime number.')
这样运行出来总是出来很多错误,后来仔细看了一下,正确是这样的
for num in range(2, 101): for i in range(2, int(num/2)+2): if num % i == 0: j = num/i print(str(num) + '=' + str(i) + '*' + str(j)) break else: print(str(num) + 'is a prime number.')
然后就回顾了下for-else的用法:
是这样的,如果for 里面的可迭代的对象迭代完为空时,才会执行else中语句,如果for 中有break,这种情况没有把for中的可迭代的对象迭代完为空,这种情况下是不会调用else中的语句的。
一句话总结就是:当for中的迭代完为空时,才会调用 else后面的语句。