Hamming

Hamming

簡單

簡介

你的身體由帶有 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.")
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Python Exercism

準備好開始 Hamming 了嗎?

註冊 Exercism,透過 17 個概念146 個練習 和真人引導來學習並精通 Python,全部免費。