循环和判段问题,请问这是什么原因造成的?
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('没有解!')
return0
这是为啥? 第二种方法里面,注意这一句:
if i*5+j*3+k/3 == 100 and i+j+k == 100:
这底下跟着一个 else 语句,也就是说不满足 if 里面的条件时,就会执行 else 里面的语句
但是 else 里面有一个 return 0,直接就返回了,此时整个函数howManyChick就直接被终止了
这里可以自行研究一下 return 0 是什么意思
另外,建议不要 print('没有解!'),因为你的解的成立情况特别的少,很容易被忽视,'没有解!'这个字符串会打印很多次
直接就一个 if 语句做判断就可以了
因为函数中第一次循环就执行到了 else 的 return
要知道:函数中只要遇到 return 这个函数就运行结束了,所以第一次循环就执行到了 else 的 return ,循环终止,导致只打印了一次没有解
另外这里就算删除 return 也会导致你 else 中的 print 函数 打印过多而把 if 中的 print 刷上去
所以不建议这样在循环中这样打印,因为 for 循环需要执行 10 的5次方左右的次数
Daniel_Zhang 发表于 2021-6-26 15:08
第二种方法里面,注意这一句:
谢谢您的答复,理解了。 Twilight6 发表于 2021-6-26 15:20
因为函数中第一次循环就执行到了 else 的 return
要知道:函数中只要遇到 return 这个函数就运行结束 ...
谢谢您的答复,感谢。
页:
[1]