gpt4 book ai didi

python - Codefights : avoidObstacles, 函数内部多次返回

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:52 24 4
gpt4 key购买 nike

我正在 codefights.com 练习编码。这是查看他们要求的链接:link .我很难理解这些 return 语句在下面的代码中到底做了什么。

我的代码:

def avoidObstacles(inputArray):

for i in range(1, max(inputArray)):
divs = any([x for x in inputArray if not x%i])
if not divs:
return i

return max(inputArray) + 1

我不明白 return max(inputArray) +1 是如何给出正确答案的。

例如:inputArray = [5,3,6,7,9] 应返回“4”。

如果有人能一步步指导我,我将不胜感激。谢谢!

最佳答案

我将尝试为您可视化代码以展示其工作原理:

>>> for i in range(1, max(inputArray)):
... print("hop " + str(i),[x for x in inputArray if not x%i])
...
('hop 1', [5, 3, 6, 7, 9])
('hop 2', [6])
('hop 3', [3, 6, 9])
('hop 4', [])
('hop 5', [5])
('hop 6', [6])
('hop 7', [7])
('hop 8', [])

你可以想象这些是跳跃长度。可以看到跳长为“1”的会撞到所有障碍物,而跳长为“2”的只会撞到第 6 个障碍物。

注意第 4 跳数组中没有任何内容。这是 any 关键字的用武之地,基本上使这个 True/False:

>>> for i in range(1, max(inputArray)):
... print(any([x for x in inputArray if not x%i]))
...
True
True
True
False
True
True
True
False

你可以看到当代码执行时,当i == 4时,divs == False,所以你会触发这个逻辑:

if not divs:   
return i

但是,在每次跳跃都遇到障碍的情况下,您永远不会有 divs == False,答案就是跳过整个过程!在这个问题中,“整个事情”是 max(inputArray)+1

的长度

关于python - Codefights : avoidObstacles, 函数内部多次返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48390381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com