鱼C论坛

 找回密码
 立即注册
查看: 1942|回复: 5

[已解决]关于遍历循环与else的一个问题

[复制链接]
发表于 2020-5-23 22:34:08 | 显示全部楼层 |阅读模式

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

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

x
今天看一段代码,楞是没有看懂。主要是两个return给我看傻了,求高手给我说道说道。
#Prime
def is_prime(n):
    for i in range(2,n):
        if n%i == 0:
            return False
    return True
sum = 0
for i in range(2,100):
    if is_prime(i):
        sum += i
print(sum)

我自己把它改了一下,改成了遍历循环加else,就感觉好懂很多。
#Prime
def is_prime(n):
    for i in range(2,n):
        if n%i == 0:
            break
    else:
        return True
sum = 0
for i in range(2,100):
    if is_prime(i):
        print(i)
        sum += i
print(sum)
最佳答案
2020-5-23 22:36:14
python 函数中一遇到 return 这个函数就不执行了
不管 return 之后还有没有代码,只要遇到return 之后的代码就不执行了
也就是说当函数 return False 时,就不会再执行后面的return True 了
如果几次循环下来,没有 成功 return False 那么就 return True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-23 22:36:14 | 显示全部楼层    本楼为最佳答案   
python 函数中一遇到 return 这个函数就不执行了
不管 return 之后还有没有代码,只要遇到return 之后的代码就不执行了
也就是说当函数 return False 时,就不会再执行后面的return True 了
如果几次循环下来,没有 成功 return False 那么就 return True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 22:40:40 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-23 22:45 编辑

def is_prime(n):
    for i in range(2,n):  # 循环遍历 2~n-1位数

        if n%i == 0:      # 判断 n 是否被 i 整除
            return False  # 若被整除 则返回 False 已经有返回值则不在执行以后的代码

    return True  # 若 for循环 n-1次都没有被 i 整除过 就会执行这个
要注意的是 第二个return 是在for循环外的 ,也就是说 第二个return 要等循环结束才有可能被执行,而且循环过程中 不能被 i 整除

因为在循环中一被 i 整除 就会返回False ,就终止了不执行之后的代码了

其实是和你正解改后的for循环代码是一样的 你可以略微按照你的代码来理解答案的代码是可行的,但是:
for i in range(2,n):
        if n%i == 0:  # 这里判断整除就直接break ,但是你的函数返回值是 None  而答案的代码返回值是 False
            break
    else:
        return True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 22:43:04 | 显示全部楼层
本帖最后由 青出于蓝 于 2020-5-23 22:46 编辑

return就是返回值啊,如果余数为0,可以整除,返回False。否则返回True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 22:44:22 | 显示全部楼层
%是求余数,range是个函数(初始,结束,步长),+=是计数。
还有什么不好理解得吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-24 11:24:13 | 显示全部楼层
感谢大家,我懂了!最佳我按时间顺序给了哦,还望其他几位见谅。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 17:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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