2016-11-22 89 views
1

我被要求在列表中添加第一個和最後一個號碼。這是我想出了:添加列表中的第一個和最後一個號碼

def addFirstAndLast(x): 
    return x[0] + x[-1] 

但是當我運行的代碼,我得到一個錯誤,指出:

IndexError: list index out of range 

我不能,雖然發現問題,當我搜索這個問題,答案等於我的代碼。

也許它與測試用例做:

  1. addFirstAndLast([2])
  2. addFirstAndLast([2, 2, 3])
  3. addFirstAndLast([])

你能幫助我嗎?

+3

最後沒有一個元素0 – RemcoGerlich

+0

此錯誤「IndexError:列表索引超出範圍」是指您嘗試訪問到一個值,但它不是你的數組中。如果你有10個元素。第一個索引爲0,最後一個爲9. –

+0

您是否理解表達式'x [0]'? –

回答

2

您需要檢查您的列表是否爲空。

def addFirstAndLast(x): 
    return (x[0] + x[-1]) if x else 0 
+0

謝謝你,我真的很感激。它沒有工作,因爲程序會在第一個測試用例中添加兩次,所以我想出了:
'if x and len(x)== 1: \t \t return x [0] \t elif x和len(X)> 1: \t \t回報(X [0] + X [-1]) \t其他: \t \t返回0' –

+0

但它確實是用不了。 – Sven

+0

是的你是對的。感謝您指出:) –

0

最後一個測試用例傳遞一個空列表。空列表既沒有[0]也沒有[-1]元素。

0

當然,在你的第三種情況下,沒有項目,因此沒有相關的索引。

0

如果列表爲空,那麼您沒有第一個和最後一個元素。請嘗試以下方法解決問題:

def add_first_and_last(x): 
    if x: 
     return x[0] + x[-1] 
    else: 
     return 0 # Or whatever you want 

你還可以嘗試:

def add_first_and_last(x): 
    return x[0] + x[-1] if x else 0 
0

在你過去的情況下,3 addFirstAndLast([])心不是那裏[0]和[-1]

任何索引

因爲列表是空的!

所以,你應該做出表率if x == []: return x

+0

請upvote我asnwer我99代表,我只是想打我的里程碑100! –

相關問題