汉明

汉明

简单

简介

你的身体由含有 DNA 的细胞组成。 这些细胞会定期损耗,需要更替,而它们靠分裂成子细胞来完成这件事。 事实上,普通人的身体一生中会经历大约 1 亿亿次细胞分裂!

细胞分裂时,它们的 DNA 也会复制。 有时在这个过程中会出差错,单个 DNA 片段会被编码成错误的信息。 如果我们比较两条 DNA 链并数出它们之间的差异,就能看出发生了多少错误。 这就是所谓的“汉明距离”。

汉明距离不只在生物学中有用,在许多科学领域都很有用,所以这是个值得熟悉的好说法 :)

说明

计算两条 DNA 链之间的汉明距离。

我们使用字母 C、A、G 和 T 来表示 DNA。 两条链可能看起来像这样:

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.")
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Python Exercism

准备好开始 汉明 了吗?

注册 Exercism,借助 17 个概念146 个练习 和真人导师指导,学习并掌握 Python,全部免费。