2016-04-09 19 views
0

Python 3'te bir kodlama sınıfı alıyorum ve kodumda neyin yanlış olduğunu bulmak için yardıma ihtiyacım var. Temel olarak yaptığım şey, bir mRNA dizisi almak ve sıradaki eksonları ayırmaktır. Fonksiyonu bir diziye ve ekzonların yerlerine veririm ve sonra onları ekleyip mRNA dizisini döndürmesi gerekir. Ödevin amacı, liste anlama, bölme veya birleştirme yöntemlerini kullanmamanızdır. Benim kod yalnızca ilk ekson konum listesinin başkalarının herhangi dilimlenen değil ile mRNA dizisini döndürürBir süre döngü kullanarak mRNA ekleme

def splice(seq, exons): 
    newseq = "" 
    i = 0 
    for x in exons: 
     while i < len(seq): 
      if i == x[0]: 
       i += (x[1] - x[0]) 
      else: 
       newseq += seq[i] 
       i = i + 1 
    return newseq 

Şimdi olduğu gibi: İşte ben bugüne kadar ne olduğunu. Şunun gibi: 'AAATTTTAA'

kimse bu işi yapmak konusunda herhangi bir öneriniz var mı:

>> splice("AAACCCTTTTGGGTTTAA", [(3,6), (10,16)]) 
'AAATTTTGGGTTTAA' 

O (benim Verilen örneğin) bu dönüş beklenir? Teşekkürler! (Java küçük biraz dışında bu dönem önce kodlanmış hiç Hatırlatma, bu yüzden bana çok kritik olmayın lütfen.)

cevap

0

deneyin:

def splice(seq, exons): 
    newseq = "" 
    next = 0 
    for x, y in exons: 
     newseq += seq[next:x] 
     next = y 
    newseq += seq[next:]   
    return newseq 

Ve test:

>>> splice("AAACCCTTTTGGGTTTAA", [(3,6), (10,16)]) 
'AAATTTTAA' 
+0

Benim kod Evet –

+0

yapmak için ne gerekiyor yanlış anlama olduğunu düşünüyorum, ben yanlış anladım. Bunu dene. – Kidus

+0

Ah şimdi işe yarıyor! Teşekkürler :) –

0

Uzun bir zaman döngüsüne ihtiyacınız olup olmadığını bilmiyorum. İşte döngü sadece kullanan bir versiyonudur:

def splice(seq, exons): 
    newseq = "" 
    i = 0 
    n = 0 
    for x in exons: 
     newseq = seq[i:x[0]-n]+seq[x[1]-n:] 
     seq = newseq 
     n = x[1]-x[0] 
     i = x[0] - n 
    return newseq 

splice("AAACCCTTTTGGGTTTAA", [(3,6), (10,16)]) 
+0

Bu işe yaramadı ... Sorgumu kontrol et –

+0

Şimdi kontrol etmeli. –

İlgili konular