Попытка перевести азбуку Морзе на английский - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь перевести азбуку Морзе на английский со словарем, который я использовал.Я пытаюсь получить его там, где пользователь вводит сообщение, и оно напечатает его / ее сообщение в азбуке Морзе.

Мне было легко перевести на азбуку Морзе, однако азбука Морзе на английском языке вызывает некоторые проблемы.

Во-первых, если я наберу '.-' для 'A', я получу вместо этого 'E', так как он читает первый '.'введите ключ и переведите его в 'E' вместо всей строки.

Это то, что я пробовал до сих пор:)

#If user types 'N' or 'n' it proceeds this loop
if morse_message == 'N' or morse_message == 'n':    #Loops looks to see if morse_message was 'N' or 'n'
    nomorse = input("Enter your Morse code here:")
    nomorse_list = (nomorse.join('')
    for letter in nomorse_list:
        not_morse = (morse_eng_dict[letter.upper()])
        print(not_morse)

И это мой словарь, у меня есть

morse_eng_dict = {".-": "A", "-...": "B", "-.-.": "C", "-..": "D", ".": "E",
                  "..-.": "F", "--.": "G", "....": "H",
                  "..": "I", ".---": "J", "-.-": "K", ".-..": "L",
                  "--": "M", "-.": "N", "---": "O", ".--.": "P",
                  "--.-": "Q", ".-.": "R", "...": "S", "-": "T", "..-": "U", "...-": "V",
                  ".--": "W", "-..-": "X", "-.--": "Y", "--..": "Z"}

Я бы хотел, чтобы Python взял мой азбуку Морзе и распечатал сообщение на английском языке.Такие как что-то вроде ....- ...Любые идеи или вклад?Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Нечто подобное должно работать: в основном, оно разбивает строку, когда есть пробел, создавая список, в котором каждый элемент представляет собой букву азбуки Морзе.Затем он проверяет каждую букву по словарю и принимает английский аналог.Наконец, он помещает все это в список, снова превращает его в строку и печатает.Надеюсь, это поможет!

morse_eng_dict = {".-": "A", "-...": "B", "-.-.": "C", "-..": "D", ".": "E",
"..-.": "F", "--.": "G", "....": "H",
"..": "I", ".---": "J", "-.-": "K", ".-..": "L",
"--": "M", "-.": "N", "---": "O", ".--.": "P",
"--.-": "Q", ".-.": "R", "...": "S", "-": "T", "..-": "U", "...-": "V",
".--": "W", "-..-": "X", "-.--": "Y", "--..": "Z"}

nomorse = input("Enter your Morse code here:")
nomorse_list = nomorse.split() #this splits the string up wherever there is a space
not_morse = []
morse = True    #The code is morse (so far)
for letter in nomorse_list:
    eng_letter = False
    for key in morse_eng_dict.keys():   #for each of the morse code letters in the dictionary
        if letter == key:
            eng_letter = morse_eng_dict[key]
    if eng_letter: #if a letter was found that corresponds
        not_morse.append(eng_letter)
    else:
        print("Input is not valid morse code.")
        morse = False
if morse == True:
    string = "".join(not_morse) #joining the string together (without spaces in between)
    print(string)
0 голосов
/ 26 апреля 2018

азбука Морзе построена с неоднозначностью.как вы указали .- можно рассматривать как et, или a.нет никакого способа легко их различить, не прибегая к большому словарю или некоторой нечеткой логике. Оператор

, как правило, использует пробелы для разделения буквы и слова: https://en.wikipedia.org/wiki/Morse_code

"Буквыслово разделено пробелом, равным трем точкам (одна черта), а слова разделены пробелом, равным семи точкам ".если вы вставите пробелы, например: 1 пробел между буквами и 2 пробела между словами, в строку кода Морзе, которая сделает декодирование кусочком пирога (разбить, затем отобразить)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...