2013-04-08 24 views
7

tamsayısına çevirme Tam sayıların (x) bir listesini kabul etmem, listedeki ilk değeri ve son değeri eklemesi ve ardından bir tam sayıyı toplamı ile döndürmesi istenir. Bunu yapmak için aşağıdaki kodu kullandım, ancak sahip olduğum sorun, toplamı değerlendirmeye çalıştığımda aslında tamsayı yerine bir tek öğe listesi olmasıdır. Onu bir int yapmaya çalıştım ama işe yaramayacak gibi görünmüyorum.Tek öğeli bir listeyi

def addFirstAndLast(x): 
    lengthOfList = len(x) 
    firstDigit = x[0:1] 
    lastDigit = x[lengthOfList:lengthOfList-1] 
    sum = firstDigit + lastDigit 
    return sum 
+0

'x' bir sayı içeriyorsa davranış ne olmalıdır? 'X [0]' veya '2 * x [0]' döndürmeli mi? –

cevap

13

Kullanım indeksleri

Sen listeleri iade listesini kesiyorsun. Burada, yerine endeksler kullanmalıdır:

firstDigit = x[0] 
lastDigit = x[-1] 

Neden sizin için yanlış doğramadır: Eğer x[0:1] yaptığınızda, listenin başından öğelerin ait listesini alıyorsun

ilk aralığa.

item0, item1, item2, item3 
^ interval 0 
     ^interval 1 
      ^interval 2 
        ^interval 3  

, x[0:2] yaparak örneğin, tüm bu aşağı kaynar öğeleri 0 ile 1

4

döneceğini:

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

, negatif bir liste indeksi şu anlama gelir: dan indeksleme başlatmak Listenin soldan sağa, sağdan sola ilk konumun -1, ikinci pozisyonu -2 ve son pozisyon -len(lst) dur.

4

Kullanım Slice Notation:

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

x [0] = size listenin 0 inci endeksi, ilk değeri verecektir.

x [-1] = size listenin son elemanı verecektir.