python中 for else 容易出错的地方

之前编判断质数的一个程序,每次看时,都看懂了,然后自己编时总会出错,

比如老是编成

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后面的语句。

猜你喜欢

转载自blog.csdn.net/qfpkzheng/article/details/80026684
今日推荐