2017-03-25 142 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 –