Hamming

Hamming

Einfach

Einführung

Dein Körper besteht aus Zellen, die DNA enthalten. Diese Zellen nutzen sich regelmäßig ab und müssen ersetzt werden, was sie schaffen, indem sie sich in Tochterzellen teilen. Tatsächlich erlebt der menschliche Körper im Laufe eines Lebens durchschnittlich etwa 10 Billiarden Zellteilungen!

Wenn sich Zellen teilen, wird auch ihre DNA repliziert. Manchmal passieren bei diesem Vorgang Fehler, und einzelne Stücke der DNA werden mit falschen Informationen kodiert. Wenn wir zwei DNA-Stränge vergleichen und die Unterschiede zwischen ihnen zählen, sehen wir, wie viele Fehler aufgetreten sind. Das nennt man die „Hamming-Distanz“.

Die Hamming-Distanz ist in vielen Bereichen der Wissenschaft nützlich, nicht nur in der Biologie. Es lohnt sich also, den Begriff zu kennen :)

Anleitung

Berechne die Hamming-Distanz zwischen zwei DNA-Strängen.

Wir lesen DNA mit den Buchstaben C, A, G und T. Zwei Stränge könnten so aussehen:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

Sie haben 7 Unterschiede, und daher ist die Hamming-Distanz 7.

Implementierungshinweise

Die Hamming-Distanz ist nur für Sequenzen gleicher Länge definiert. Ein Versuch, sie zwischen unterschiedlich langen Sequenzen zu berechnen, sollte daher nicht funktionieren.

Exception-Meldungen

Manchmal ist es notwendig, eine Exception auszulösen. Wenn du das tust, solltest du immer eine aussagekräftige Fehlermeldung angeben, die angibt, woher der Fehler kommt. Das macht deinen Code lesbarer und hilft beim Debugging erheblich. Wenn du weißt, dass die Fehlerquelle von einem bestimmten Typ ist, kannst du eine der eingebauten Fehlertypen auslösen, solltest aber trotzdem eine aussagekräftige Meldung angeben.

Diese Übung erfordert, dass du die raise-Anweisung verwendest, um eine ValueError zu „werfen“, wenn die überprüften Stränge nicht gleich lang sind. Die Tests bestehen nur, wenn du die exception sowohl mit raise auslöst als auch eine Meldung dazu angibst.

Um eine ValueError mit einer Meldung auszulösen, schreibe die Meldung als Argument für den Typ exception:

# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Python Exercism

Bereit, mit Hamming zu starten?

Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.