你的身體由帶有 DNA 的細胞組成。 這些細胞會定期耗損,需要汰換,而它們是靠分裂成子細胞來完成這件事。 事實上,人的一生中,身體平均會經歷大約數千兆次的細胞分裂!
細胞分裂時,它們的 DNA 也會複製。 有時在這個過程中會出差錯,使單一片段的 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.")