我正在努力弄清楚这项任务要求我输出的确切内容。我构建了这个python函数,但它并没有做教授希望它做的事情。我很困惑。
以下是说明:
定义函数extract_negatives:第一个参数xs包含整数。我们将删除我们在xs中找到的任何负整数,并将它们附加到第二个参数new_home。必须返回对收到底片的列表的引用。如果没有给出第二个参数,则应创建并返回所有提取的否定的列表。
确定此功能的签名是任务的一部分。小心:你想为new_home使用什么默认值?当我们多次调用函数时会发生什么 相同的编码会话? (试试看) 继续使用.insert(),. pop(),. append()
等方法您可能需要同时迭代和更新列表。提示:如果你需要从前到后遍历列表,但是你并不总是想要转到下一个索引位置,而循环可能非常有用 - 我们可以控制何时(哪个迭代)向前迈进
以下是给出的例子:
输入:xs = [1,-22,3,-44,-5,6,7] extract_negatives(XS) yeilds:[ - 22,-44,-5] #return一系列底片 XS
[1,3,6,7] #remove来自xs的负片
这是我建立的功能:
def extract_negatives(xs,new_home):
new_home=[]
for num in range(len(xs)):
if xs[num] <0:
new_home.append(xs[num])
return new_home
我试过问教授,但是几天没有回应。 Mayybe,你可以帮助理解被问到的内容吗?
答案 0 :(得分:1)
我的理解是你有两个场景。首先只传递一个参数,因此您需要创建new_home并返回它。其次是你将new_home作为第二个参数,你只需将负数附加到它。
此外,您需要删除xs中的否定信息,我认为您的代码现在不会这样做。
对于可变参数大小,请查看此处:Can a variable number of arguments be passed to a function?
答案 1 :(得分:1)
我认为这可能是你需要知道的主要事情,如果还不晚。这段代码显示了如何确定已传递了多少位置参数以及如何确定它们的值。在您的情况下,如果只有一个参数,那么您需要重新创建结果列表,如果是2则必须在第二个参数中将值附加到列表中。
>>> def extract_negatives(*args):
... print (len(args))
...
... if len(args)==1:
... print (args[0])
... elif len(args) == 2:
... print (args[0], args[1])
... else: raise RuntimeError('Incorrect number of parameters')
...
>>> extract_negatives([1,2,3])
1
[1, 2, 3]
>>> extract_negatives([1,2,3], [1,0])
2
[1, 2, 3] [1, 0]
>>> extract_negatives([1,2,3], [1,0], [5,6])
3
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "<interactive input>", line 8, in extract_negatives
RuntimeError: Incorrect number of parameters