Бюро переписи США использует специальную кодировку под названием «soundex» для поиска информации о человеке. Soundex - это кодировка фамилий (фамилий), основанных на том, как звучит фамилия, а не как она написана. Фамилии, которые звучат одинаково, но различаются по-разному, например SMITH и SMYTH, имеют одинаковый код и подаются вместе. Система кодирования soundex была разработана так, что вы можете найти фамилию, даже если она, возможно, была записана под различными написаниями.Алгоритм Soundex в Python (запрос справки на домашнюю работу)
В этой лаборатории вы будете проектировать, кодировать и документировать программу, которая создает код soundex при вводе с фамилией. Пользователю будет предложено указать фамилию, и программа должна вывести соответствующий код.
Основные SOUNDEX Coding Правила
Каждый Саундэкс кодирования фамилии состоит из буквы и трех цифр. Используемое письмо всегда является первой буквой фамилии. Номера присваиваются остальным буквам фамилии в соответствии с приведенным ниже руководством soundex. Нулевые значения добавляются в конце, если необходимо, чтобы всегда создавать четырехсимвольный код. Дополнительные буквы не учитываются.
Саундэкс Coding Руководство
Саундэкс назначает номер для различных согласных. Согласные, которые звучат одинаково назначены один и тот же номер:
Номер Согласные
1 В, F, P, V 2 С, G, J, K, Q, S, X, Z 3 D, Т 4 L 5 M, N 6 R
Саундэкс игнорирует буквы A, E, I, O, U, H, W и Y.
Есть 3 дополнительных SOUNDEX правила кодирования, которые следуют. Хороший дизайн программы будет реализовывать их как одну или несколько отдельных функций.
Правила 1. Имена с двойным Letters
Если фамилия имеет какие-либо двойные буквы, они должны рассматриваться в качестве одной буквы. Например:
Gutierrez закодирован G362 (G, 3 для T, 6 для первого R, второй R игнорируется, 2 для Z). Правило 2. Имена с письмами Бок о бок, которые имеют одинаковый код Soundex
Если фамилия имеет разные буквы бок о бок, которые имеют одинаковое число в руководстве по кодированию звука, они должны рассматриваться как одна буква. Примеры:
Pfister кодируется как P236 (P, F игнорируется, поскольку он считается таким же, как P, 2 для S, 3 для T, 6 для R).
Jackson кодируется как J250 (J, 2 для C, K игнорируется так же, как C, S игнорируется так же, как C, 5 для добавления N, 0).
Правило 3. Согласные Сепараторы
3.a. Если гласный (A, E, I, O, U) разделяет два согласных, которые имеют один и тот же код soundex, закодирован согласный справа от гласного. Пример:
Tymczak кодируется как T-522 (T, 5 для M, 2 для C, Z игнорируется (см. Выше правило «Бок о бок»), 2 для K). Поскольку гласный «A» разделяет Z и K, кодируется K. 3.b.Если «H» или «W» разделяют два согласных, которые имеют одинаковый код soundex, согласный справа не закодирован. Пример:
* Ashcraft кодируется A261 (A, 2 для S, C игнорируется с тех пор, как S с H между ними, 6 для R, 1 для F). Он не закодирован A226.
До сих пор это мой код:
surname = raw_input("Please enter surname:")
outstring = ""
outstring = outstring + surname[0]
for i in range (1, len(surname)):
nextletter = surname[i]
if nextletter in ['B','F','P','V']:
outstring = outstring + '1'
elif nextletter in ['C','G','J','K','Q','S','X','Z']:
outstring = outstring + '2'
elif nextletter in ['D','T']:
outstring = outstring + '3'
elif nextletter in ['L']:
outstring = outstring + '4'
elif nextletter in ['M','N']:
outstring = outstring + '5'
elif nextletter in ['R']:
outstring = outstring + '6'
print outstring
достаточно делает то, что просят, я просто не знаю, как закодировать три правила. Вот где мне нужна помощь. Таким образом, любая помощь приветствуется.
я помог разъяснению названия ;-) –
Im не читают весь домашнее задание. Перестаньте это с тем, что входы и что вы хотите в качестве вывода. – JonH
Он задал всю сцену и попросил о том, как двигаться дальше. У него нет НИКАКИХ ВОПРОСОВ, требующих ответа. Если он отправил запрос, указав входы и выходы, это должно быть закрыто. Это очень хороший пример того, как задать вопрос о домашнем задании !!! –