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
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