| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
求助大神,这里为啥不用continue而用break呢? 
for n in range(2,10): 
    for x in range(2,n): 
        if n % x == 0: 
            print(n,'=',x,'*',n//x) 
            continue 
 
2 是一个素数 
3 是一个素数 
4 = 2 * 2 
4 是一个素数 
5 是一个素数 
6 = 2 * 3 
6 = 3 * 2 
6 是一个素数 
7 是一个素数 
8 = 2 * 4 
8 = 4 * 2 
8 是一个素数 
9 = 3 * 3 
9 是一个素数 
 
    else: 
        print(n,'是一个素数') 
 
用break是这样的结果: 
for n in range(2,10): 
    for x in range(2,n): 
        if n % x == 0: 
            print(n,'=',x,'*',n//x) 
            break 
    else: 
        print(n,'是一个素数') 
 
2 是一个素数 
3 是一个素数 
4 = 2 * 2 
5 是一个素数 
6 = 2 * 3 
7 是一个素数 
8 = 2 * 4 
9 = 3 * 3
在这个例子中,continue和break的作用是不同的。 
 
当使用continue时,它会让循环继续执行下一个迭代,但不会退出当前循环。这就是为什么在第一个代码块中,当遇到可以被整除的数时,它会继续尝试其他的x值,即使已经找到了一个可以整除的值。因此,你的输出结果包含了重复的数字,还有错误地显示了一些数是素数(如4, 6, 8, 9)。 
 
而当使用break时,它会立即跳出当前循环,不再执行后面的迭代。在第二个代码块中,当找到一个可以整除的x时,它会跳出内层循环,然后执行外层循环的下一个迭代。这里的else与内层循环的for关联,只有当内层循环正常结束(没有遇到break)时才会执行,所以输出结果才是正确的。 
 
所以,正确的代码应该使用break,因为一旦找到一个可以整除的x,就没有必要继续尝试其他的x值了。我们已经知道这个数不是素数,所以可以跳出内层循环并检查下一个数。 
 
 
 |   
 
 
 
 |