鱼C论坛

 找回密码
 立即注册
查看: 2188|回复: 1

[已解决]python问题求助-for循环

[复制链接]
发表于 2023-4-7 20:10:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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
最佳答案
2023-4-7 20:12:27
在这个例子中,continue和break的作用是不同的。

当使用continue时,它会让循环继续执行下一个迭代,但不会退出当前循环。这就是为什么在第一个代码块中,当遇到可以被整除的数时,它会继续尝试其他的x值,即使已经找到了一个可以整除的值。因此,你的输出结果包含了重复的数字,还有错误地显示了一些数是素数(如4, 6, 8, 9)。

而当使用break时,它会立即跳出当前循环,不再执行后面的迭代。在第二个代码块中,当找到一个可以整除的x时,它会跳出内层循环,然后执行外层循环的下一个迭代。这里的else与内层循环的for关联,只有当内层循环正常结束(没有遇到break)时才会执行,所以输出结果才是正确的。

所以,正确的代码应该使用break,因为一旦找到一个可以整除的x,就没有必要继续尝试其他的x值了。我们已经知道这个数不是素数,所以可以跳出内层循环并检查下一个数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-7 20:12:27 | 显示全部楼层    本楼为最佳答案   
在这个例子中,continue和break的作用是不同的。

当使用continue时,它会让循环继续执行下一个迭代,但不会退出当前循环。这就是为什么在第一个代码块中,当遇到可以被整除的数时,它会继续尝试其他的x值,即使已经找到了一个可以整除的值。因此,你的输出结果包含了重复的数字,还有错误地显示了一些数是素数(如4, 6, 8, 9)。

而当使用break时,它会立即跳出当前循环,不再执行后面的迭代。在第二个代码块中,当找到一个可以整除的x时,它会跳出内层循环,然后执行外层循环的下一个迭代。这里的else与内层循环的for关联,只有当内层循环正常结束(没有遇到break)时才会执行,所以输出结果才是正确的。

所以,正确的代码应该使用break,因为一旦找到一个可以整除的x,就没有必要继续尝试其他的x值了。我们已经知道这个数不是素数,所以可以跳出内层循环并检查下一个数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 23:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表