O teu corpo é feito de células que contêm DNA. Essas células desgastam-se regularmente e precisam de ser substituídas, o que conseguem ao dividir-se em células-filhas. De facto, o corpo humano médio passa por cerca de dez mil biliões de divisões celulares ao longo da vida!
Quando as células se dividem, o seu DNA também se replica. Por vezes, durante este processo, acontecem erros e pequenas partes de DNA ficam codificadas com a informação incorreta. Se compararmos duas cadeias de DNA e contarmos as diferenças entre elas, conseguimos ver quantos erros ocorreram. É a isto que se chama a "distância de Hamming".
A distância de Hamming é útil em muitas áreas da ciência, não só na biologia, por isso é uma expressão que vale a pena conheceres :)
Calcula a distância de Hamming entre duas cadeias de ADN.
Lemos o ADN através das letras C, A, G e T. Duas cadeias podem ter este aspeto:
GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^ ^ ^ ^^
Têm 7 diferenças e, por isso, a distância de Hamming é 7.
A distância de Hamming só está definida para sequências de igual comprimento. Por isso, não deve ser possível calculá-la entre sequências com comprimentos diferentes.
Por vezes é necessário lançar uma exceção. Quando o fazes, deves incluir sempre uma mensagem de erro significativa que indique qual é a origem do erro. Isto torna o teu código mais legível e ajuda imenso na depuração. Nas situações em que sabes que a origem do erro será de um determinado tipo, podes optar por lançar um dos tipos de erro incorporados, mas deves continuar a incluir uma mensagem significativa.
Este exercício em particular exige que uses a instrução raise para "lançar" um ValueError quando as cadeias que estão a ser verificadas não tiverem o mesmo comprimento. Os testes só passam se fizeres raise da exception e incluíres uma mensagem com ela.
Para lançar um ValueError com uma mensagem, escreve a mensagem como argumento do tipo exception:
# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
Inscreve-te no Exercism para aprenderes e dominares Python com 17 conceitos146 exercícios, e mentoria humana real, tudo grátis.