da ich noch nicht so lange mit Python programmiere, bin ich mit den allgemeinen Konzepten der Sprache noch nicht so vertraut. Dazu habe ich mir ein Buch über Algorithmen in Python gekauft, in dem IntEnum verwendet werden. Doch irgenwie kommt mir die Verwendung der IntEnum so relativ komisch vor, zudem meckert mein Compiler da etwas. Dazu also die Frage, ob man IntEnum so überhaupt verwendet? Dazu ist zu erwähnen, dass nur das Prinzip der linearen Suche erklärt werden sollte (__contains__() wurde darunter erklärt).
Code: Alles auswählen
from enum import IntEnum
from typing import Tuple, List
Nucleotide: IntEnum = IntEnum('Nucleotide', ('A', 'C', 'G', 'T'))
Codon = Tuple[Nucleotide, Nucleotide, Nucleotide] #Type-Alias für Codons
Gene = List[Codon] #Typ-Alias für Gene
gene_str = "ACGTATTGCTAGCTAGGCTAGCT"
def string_to_gene(s) -> Gene:
gene = []
for i in range(0, len(s), 3):
if (i + 2) >= len(s): #Nicht über das Ende hinausschießen!
return gene
#Codon aus drei Nukleotiden initsialisiert
codon = (Nucleotide[s[i]], Nucleotide[s[i + 1]], Nucleotide[s[i +2]])
gene.append(codon)
return gene
def linear_contains(gene: Gene, key_codon: Codon) -> bool:
for codon in gene:
if codon == key_codon:
return True
return False
if __name__ == "__main__":
my_gene = string_to_gene(gene_str)
acg = (Nucleotide.A, Nucleotide.C, Nucleotide.G)
print(linear_contains(my_gene, acg))