Mam ciąg taki jak rna = "UACGAUGUUUCGGGAAUGCCUAAAUGUUCCGGCUGCUAA" i chcę iterować przez ciąg i przechwytywać różne ciągi, które zaczynają się od 'AUG' i od 'UAA' lub 'UAG' lub 'UGA' .

To jest kod, który do tej pory napisałem:

rna = "UACGAUGUUUCGGGAAUGCCUAAAUGUUCCGGCUGCUAA"      # start --> AUG; STOP --> UAA, UAG, UGA
hello = " "
n = 3
list = []
for i in range(0, len(rna), n):
    list.append(rna[i:i+n])

for i in list:
    if i == "AUG":
        hello += i
        i = i + 1
        if i != "UAA" or "UAG" or "UGA":
            hello += i

To daje mi błąd typu:- błąd

0
Soham Sharma 5 styczeń 2022, 14:34
2
Dołącz komunikat o błędzie, aby wyjaśnić błąd.
 – 
Albin Sidås
5 styczeń 2022, 14:37
2
Jaki błąd typu? Podaj minimalnie odtwarzalny przykład. I pamiętaj, że popełniasz ten błąd: stackoverflow.com/q/15112125/3001761
 – 
jonrsharpe
5 styczeń 2022, 14:37
2
Co jest I w ostatniej linii?
 – 
qouify
5 styczeń 2022, 14:39
2
Prosimy nie zamieszczać zdjęć treści tekstowych - nie można ich przeszukiwać i indeksować, nie skalują się jak tekst i są całkowicie niedostępne dla użytkowników m.in. czytniki ekranu. Ale zasadniczo błąd mówi, na czym polega problem — i to łańcuch (dosłownie porównałeś go do "AUG", więc chyba wiesz), więc + 1 nie ma znaczenia po zastosowaniu do niego.
 – 
jonrsharpe
5 styczeń 2022, 14:43
1
Wygląda na to, że czasami używaj i jako indeksu listy (i = i + 1), aby odnieść się do zawartości listy (i == "AUG"). To nie może działać i naturalnie otrzymasz wyjątek TypeError, taki jak ten, który otrzymałeś.
 – 
qouify
5 styczeń 2022, 14:46

1 odpowiedź

Najlepsza odpowiedź

Problem w tym wierszu kodu:

if i != "UAA" or "UAG" or "UGA":
            hello += i

Powinieneś sprawdzić osobno każdą wartość obiektu i:

if i!= "UAA" or i!= "UAG" or i!= "UGA":
            hello += i

Lub po prostu możesz sprawdzić stan:

 if i not in ["UAA", "UAG", "UGA"]:
           hello += i

Nie możesz również łączyć wartości ciągu z wartością int w tym wierszu kodu:

i = i + 1

Powinieneś rzutować 1 na typ danych string.

1
Oghli 5 styczeń 2022, 15:32