Наше тіло складається з клітин, які містять ДНК. Ці клітини регулярно зношуються і потребують заміни, а заміна відбувається шляхом поділу на дочірні клітини. Насправді, у середньому людське тіло за життя зазнає близько 10 квадрильйонів поділів клітин!
Коли клітини діляться, їхня ДНК теж реплікується. Іноді під час цього процесу трапляються помилки, і окремі ділянки ДНК отримують неправильну інформацію. Якщо порівняти два ланцюги ДНК і порахувати відмінності між ними, можна побачити, скільки помилок сталося. Це називається «відстанню Геммінга».
Відстань Геммінга корисна в багатьох галузях науки, не лише в біології, тож із цим терміном варто ознайомитися :)
Обчисліть відстань Гаммінга між двома ланцюгами ДНК.
Ми читаємо ДНК за допомогою літер C, A, G і T. Два ланцюги можуть мати такий вигляд:
GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^ ^ ^ ^^
У них 7 відмінностей, а отже, відстань Гаммінга дорівнює 7.
Відстань Гаммінга визначена лише для послідовностей однакової довжини, тому спроба обчислити її між послідовностями різної довжини не повинна працювати.
Іноді виникає потреба згенерувати виняток. Коли ми це робимо, варто завжди додавати змістовне повідомлення про помилку, яке вказує на джерело помилки. Це робить код зрозумілішим і значно допомагає під час налагодження. Якщо ми знаємо, що джерело помилки належить до певного типу, можна згенерувати один із вбудованих типів помилок, але повідомлення все одно має бути змістовним.
У цій вправі потрібно скористатися інструкцією raise, щоб «кинути» ValueError, коли ланцюги, які перевіряються, мають різну довжину. Тести пройдуть лише за умови, що ми одночасно і застосуємо raise до exception, і додамо до нього повідомлення.
Щоб згенерувати ValueError з повідомленням, запишімо це повідомлення як аргумент до типу exception:
# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
Зареєструйтеся на Exercism, щоб вивчати й опановувати Python, а також 17 концепцій146 вправ та справжнє наставництво від людей, і все це безкоштовно.