2016-11-23 77 views
-3

我會喜歡該函數返回一個評論,如果參數給不是一個列表。如果它是一個列表,我想要執行一些操作。如何檢查給函數的參數是否爲列表?

下面

是代碼:

def manipulate_data(*num): 
    if type(num) is not list: 
    return "Only lists allowed" 
    else: 
    positive = 0 
    for n in num: 
     if n >= 0: 
      positive = positive + 1 
+1

而_what_是你的問題嗎? –

+3

'num'的類型總是'tuple'。刪除'*'和代碼將工作。 – vaultah

+0

'如果不是isinstance(num,list):' – Chr

回答

0

通過使用你的包裝所有的參數到一個列表中的* NUMS說法。 official documentation可能會有用。

manipulate_data(1, 2, 3, 4, 5)將導致num = (1, 2, 3, 4, 5)manipulate_data([1, 2, 3, 4, 5])將導致num = ([1, 2, 3, 4, 5],)這是一個只有一個元素的元組。刪除*或者需要處理多個列表,因爲參數使用循環對每個元組元素進行檢查。

def manipulate_data(num): 
    if type(num) is not list: 
    return "Only lists allowed" 
    else: 
    positive = 0 
    for n in num: 
     if n >= 0: 
      positive += 1 
    return positive 
def manipulate_multiple(*nums): 
    for num in nums: 
    manipulate_data(num) 

記住這個功能沒有返回任何尚未

+0

你的回答指出了我的正確方向,但是,我想要做的是用提供的列表執行操作。例如,如果提供的列表是[1,3,2,3],我希望能夠返回列表中元素的總和,示例應返回9.代碼返回1 – Weirdsourcer

+0

@ Weirdsourcer函數正如我所提到的那樣,它沒有返回任何東西,編輯它以返回正數,因爲它正在計數它們。爲了添加所有元素,請嘗試使用'sum(num)' – Adirio

-1

OK,使其更乾淨,除了A,B,無不留下位置參數會被傳遞到c

>>> def func(a, b, *c): 
...  print a 
...  print b 
...  print c 

...

>>> func(1, 2, 3, 4, 5) 

1 
2 
(3, 4, 5) 
+0

答案不能解釋用戶爲什麼發生這種情況,或者在哪裏找到關於此的文檔。至少應該提供一些關鍵字用於Google搜索 – Adirio

相關問題