2017-03-25 143 views
0

我正在努力弄清楚这个任务要求我输出的具体内容。我建立了这个python函数,但它没有做到教授想要它做的事情。我很困惑。这个函数需要输出什么?

下面是说明:

定义函数extract_negatives:第一个参数,XS,包含整数。我们将删除我们在xs中找到的任何负数整数,并将它们附加到第二个参数new_home。必须返回提供负面信息的列表。当没有给出第二个参数时,应该创建并返回所有提取的底片列表。

搞清楚这个函数的签名是任务的一部分。小心:你想用于new_home的默认值是什么?当我们在 多次调用同一个编码会话中的函数时会发生什么? (试用) 继续并使用.insert(),.pop(),.append()等方法。

您可能需要同时迭代和更新列表。提示:如果你需要从前到后遍历一个列表,但你并不总是想要到下一个索引位置,而循环可能非常有用 - 我们可以控制何时(哪个迭代)前进。

下面是给出的实施例:[-22,3 -44 1,,,-5,6,7,8-] XS = extract_negatives(XS) yeilds:

输入[-22 ,-44,-5] #return的底片 XS
列表 [1,3,6,7]从XS

这里#remove底片是我建立了功能:

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你可以帮助理解正在问什么?

回答

1

我认为这可能是你需要知道的主要事情,如果它不是为时已晚。这一段代码显示了如何确定已经传递了多少位置参数以及如何确定它们的值。在你的情况下,如果只有一个参数,那么你需要重新创建结果列表,如果有两个,那么你必须在第二个参数的列表中追加值。

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

我的理解是你有两种情况。首先只传递一个参数,因此您需要创建new_home并将其返回。其次是你得到new_home作为第二个参数,并且你只是将否定附加到它。

此外,您需要删除xs中的否定字词,我认为您的代码现在没有这样做。

对于可变参数的大小看这里:Can a variable number of arguments be passed to a function?

+0

我不明白如何使它工作如果通过第二个参数。如果我包括它,它会不会影响整个事情? – kg123

+0

我用新参数更新了我的代码。 – kg123

+0

你仍然没有消除xs中的负面因素。而对于可变参数大小,你可以看看这个:http:// stackoverflow。com/questions/919680/can-a-variable-number-of-arguments-be-pass-to-a-function –