python-3.x - CodingBat - 热身 2 - ARRAY_FRONT9

标签 python-3.x

我对编程非常陌生,希望您能提供有关我在 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

感谢您的帮助。谢谢大家。

Screenshot with the expected answers

最佳答案

您的解决方案因 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/

相关文章:

python - 如何在循环已经运行时继续执行代码

python - python PyQt4 中 sys.argv 的用途是什么

python - 调用statistics.mean()时消耗的列表

python - 多索引 groupby 计数,包括 pandas 中的 NaN 值,并通过单个 groupby 计算百分比

python - 如何转换为 Python 列表理解

python - 如何使用鼠标手动放置 networkx 节点?

python - BeautifulSoup - 处理 variable.find().string 返回空的情况

json - writer.writerow() 未写入正确的列

python - 构建分发文件时出现Python3 SyntaxError

python - map() 函数获取输入