|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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值了。我们已经知道这个数不是素数,所以可以跳出内层循环并检查下一个数。
|
|