鱼C论坛

 找回密码
 立即注册
查看: 1694|回复: 4

[已解决]循环和判段问题,请问这是什么原因造成的?

[复制链接]
发表于 2021-6-26 14:48:51 | 显示全部楼层 |阅读模式

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

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

x
def howManyChick():

    """

    :return:
    """
    for i in range(0, 100):
        for j in range(0, 100):
            for k in range(0, 100):
                if i*5+j*3+k/3 == 100 and i+j+k == 100:
                    print('公鸡的数量是 {} ,母鸡的数量是 {} ,小鸡的数量是 {} 。'.format(i, j, k))

这段代码能得到正确答案,但是下面的确得不到,不解,请帮忙指点。
def howManyChick():

    """

    :return:
    """
    for i in range(0, 100):
        for j in range(0, 100):
            for k in range(0, 100):
                if i*5+j*3+k/3 == 100 and i+j+k == 100:
                    print('公鸡的数量是 {} ,母鸡的数量是 {} ,小鸡的数量是 {} 。'.format(i, j, k))
                    break
                else:
                    print('没有解!')
                    return  0

这是为啥?
最佳答案
2021-6-26 15:20:04

因为函数中第一次循环就执行到了 else 的 return

要知道:函数中只要遇到 return 这个函数就运行结束了,所以第一次循环就执行到了 else 的 return ,循环终止,导致只打印了一次没有解

另外这里就算删除 return 也会导致你 else 中的 print 函数 打印过多而把 if 中的 print 刷上去

所以不建议这样在循环中这样打印,因为 for 循环需要执行 10 的5次方左右的次数

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-26 15:08:49 | 显示全部楼层
第二种方法里面,注意这一句:
if i*5+j*3+k/3 == 100 and i+j+k == 100:

这底下跟着一个 else 语句,也就是说不满足 if 里面的条件时,就会执行 else 里面的语句

但是 else 里面有一个 return 0,直接就返回了,此时整个函数howManyChick就直接被终止了

这里可以自行研究一下 return 0 是什么意思

另外,建议不要 print('没有解!'),因为你的解的成立情况特别的少,很容易被忽视,'没有解!'这个字符串会打印很多次

直接就一个 if 语句做判断就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-26 15:20:04 | 显示全部楼层    本楼为最佳答案   

因为函数中第一次循环就执行到了 else 的 return

要知道:函数中只要遇到 return 这个函数就运行结束了,所以第一次循环就执行到了 else 的 return ,循环终止,导致只打印了一次没有解

另外这里就算删除 return 也会导致你 else 中的 print 函数 打印过多而把 if 中的 print 刷上去

所以不建议这样在循环中这样打印,因为 for 循环需要执行 10 的5次方左右的次数

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-26 23:07:43 | 显示全部楼层
Daniel_Zhang 发表于 2021-6-26 15:08
第二种方法里面,注意这一句:

谢谢您的答复,理解了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-26 23:08:15 | 显示全部楼层
Twilight6 发表于 2021-6-26 15:20
因为函数中第一次循环就执行到了 else 的 return

要知道:函数中只要遇到 return 这个函数就运行结束 ...

谢谢您的答复,感谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 06:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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