Python 使用任意数量的参数计算负整数的函数

Python function that counts negative integers using arbitrary number of parameters

Python 新手,我需要帮助处理具有任意数量参数的函数。

我想实现一个可以接受任意数量参数并计算负整数的函数。我想在下面的数字列表 4,-3,5,6,-7

上尝试 negative_counter 函数

看看我的尝试(不知道我做错了什么)

def negative_counter(*args):
    # setting the negative count to 0
    neg_count = 0
    # iterating through the parameters
    for x in args:
    # negative numbers are less than 0
        if args < 0:
    # adding 1 to negative number
            neg_count = neg_count + 1
            return neg_count

# driver code 
negative_counter([4,-3,5,6,-7]) 

#Desired output should return 2 since -3 and -7 are the negative integers

请在回复时发布您的代码。谢谢

您的代码有 2 个问题。首先,它应该是 if x < 0 而不是 if args < 0 因为 x 是 args 中的一个元素。其次,循环内有一个 return,因此它在将 neg_count 增加一后结束函数。

这段代码可能会更好更短 ;)

only_neg = [num for num in args if num < 0]
neg_count = len(only_neg)

neg_count = sum(1 for i in args if i < 0)

您的代码有几个问题:

  • 您已指定该函数采用单个可变参数,如 the Arbitrary Arguments List documentation 中所述。因此,args 最终成为一个包含一个元素的列表,即您传递给驱动程序的列表。
  • 您需要与 x 而不是 args 进行比较。

以下示例演示如何使用可变参数以及 unpacking argument lists,以及简化的实现:

def negative_counter(*args):
    neg_count = 0
    for x in args:
        if x < 0:
            neg_count = neg_count + 1
    return neg_count

def negative_counter_list(num_list):
    neg_count = 0
    for x in num_list:
        if x < 0:
            neg_count = neg_count + 1
    return neg_count

def negative_counter_simplified(*args):
    return len([x for x in args if x < 0])

numbers = [4, -3, 5, 6, -7]

# use "*numbers" to unpack the list
print(negative_counter(*numbers))

# use the function that actually expects the list
print(negative_counter_list(numbers))

# use the simplified implementation, once again unpacking the list
print(negative_counter_simplified(*numbers)

输出:

$ python3 test.py
2
2
2