我对编程非常陌生,希望您能提供有关我在 CodingBat 上遇到的问题的专业知识。 但我不确定为什么我的解决方案不起作用。我在这里缺少什么?
问题
给定一个整数数组,如果数组中前 4 个元素之一是 9,则返回 True。数组长度可能小于 4。
array_front9([1, 2, 9, 3, 4]) → 真
array_front9([1, 2, 3, 4, 9]) → False
array_front9([1, 2, 3, 4, 5]) → 假
我的解决方案
def array_front9(nums):
for i in range(0,len(nums)):
if len(nums)> 0 and nums[i] == 9:
return True
else:
return False
在线解决方案
def array_front9(nums):
# First figure the end for the loop
end = len(nums)
if end > 4:
end = 4
for i in range(end): # loop over index [0, 1, 2, 3]
if nums[i] == 9:
return True
return False
感谢您的帮助。谢谢大家。
最佳答案
您的解决方案因 return False
行而提前退出。正如目前所写的,代码表示:“检查列表中的第一个数字。如果是 9,则结束该函数并返回True
。否则,结束函数并返回False
。”这就是 return
语句的作用:结束函数并(可选)返回一些内容。
要解决此问题,您所需要做的就是删除 else
block 并更改 return False
的缩进:
def array_front9(nums):
for i in range(0,len(nums)):
if nums[i] == 9:
return True
return False
(您对 len(nums) > 0
的额外检查是不必要的,因为 range(0, 0)
不会执行任何操作,而 for
> 循环将被跳过。)
通过取消缩进 return False
,该行现在只会在 for
循环完成后运行,这正是您想要的。请注意,您仍然需要修改此代码以仅检查数组中的前 4 项。
此外,在像 CodingBat 这样的学习环境之外,在现实世界中,Python 会为您完成所有这些工作。您只需在 nums[:4] 中写入 9
即可得到答案。
关于python-3.x - CodingBat - 热身 2 - ARRAY_FRONT9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62207405/