【问题标题】:Function comparing list with a number函数将列表与数字进行比较
【发布时间】:2020-11-24 09:44:07
【问题描述】:

我在 python 和一般编程方面相当陌生,我需要帮助。我需要编写一个将给定列表与整数进行比较的函数。最后,该函数计算该数字比列表中的元素大多少倍。它也不应该考虑负数。我写了一个代码,但它没有给我正确的答案:

def count_smaller(input_list: List[int], compared_number: int) -> int:
    a = -1
    for i in input_list:
        if compared_number <= 0:
            continue
        elif compared_number > i:
            a += 1
            return a
        else:
            a = 0
            return a

c = count_smaller([-1, 0, 1, 2, 3], 2)
print(c)

这段代码给了我 1,但显而易见的答案是 2。我真的很努力完成这项任务,我希望有人能帮助我。

【问题讨论】:

  • 欢迎来到 SO! compared_number 来自哪里,是什么?

标签: python list function for-loop


【解决方案1】:

所以,您的代码中有几个问题:

  • 首先,a = -1 的声明是完全没用的(你有没有想过要这样声明?)。
  • 然后,对于所有returns,您将只验证第一个非负数,然后返回您的结果。
  • 最后但并非最不重要的一点是,如果 che 数低于 compared_number 此处为 compared_number &gt; i,则您将增加计数器。

这应该可行:

def count_smaller(input_list, compared_number):
    a = 0
    for i in input_list:
        if compared_number <= 0:
            continue
        elif compared_number <= i:
            a += 1
    return a


c = count_smaller([-1, 0, 1, 2, 3], 2)
print(c)

输出将是:

2

【讨论】:

  • 非常感谢您的帮助。我对 return 有点困惑,但我可以看到我的错误。
【解决方案2】:

您可以使用列表推导:

def count_smaller(input_list, compared_number):
    return sum(
        [1 for item in input_list if item >= 0 and compared_number > item]
    )


c = count_smaller([-1, 0, 1, 2, 3], 2)
print(c)

输出:

2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多