Top.Mail.Ru
Ответы

Как сделать перевод кода Морзе в текст на Python?

У меня есть функция которая переводит код Морзе в текст. Она работает. Теперь мне нужна функция которая переводит текст в код. Я попытался реализовать функцию но она не работает. Я мне нужна помощь с этим.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
 def Clean_stroke(content): 
    result = [] 
    content = str(content).lower() 
 
    for element in content: 
        if ord(element) >= 1072 and ord(element) <= 1103: 
            result.append(element) 
 
    return result 
 
def toMorse(content): 
    content=ui.lineEdit.text() 
    rus_to_morse = {'а': '.-', 
                    'б': '-...', 
                    'в': '.--', 
                    'г': '--.', 
                    'д': '-..', 
                    'е': '.', 
                    'ж': '...-', 
                    'з': '--..', 
                    'и': '..', 
                    'й': '.---', 
                    'к': '-.-', 
                    'л': '.-..', 
                    'м': '--', 
                    'н': '-.', 
                    'о': '---', 
                    'п': '.--.', 
                    'р': '.-.', 
                    'с': '...', 
                    'т': '-', 
                    'у': '..-', 
                    'ф': '..-.', 
                    'х': '....', 
                    'ц': '-.-.', 
                    'ч': '---.', 
                    'ш': '----', 
                    'щ': '--.-', 
                    'ъ': '.--.-.', 
                    'ы': '-.--', 
                    'ь': '-..-', 
                    'э': '..-..', 
                    'ю': '..--', 
                    'я': '.-.-'} 
      
    content = Clean_stroke(content) 
    result = [] 
      
    for element in content: 
        result.append(rus_to_morse[element]) 
 
    ui.lineEdit_2.setText(str(result)) 
    for set in result: 
        for symbol in set: 
            if symbol == '.': 
                winsound.Beep(frequency, 100) 
            elif symbol == '-': 
                winsound.Beep(frequency, 700) 
##    print() 
##    time.sleep(0.2) 
    return result 
 
def toText(content):   # Не работает
    content=ui.lineEdit_3.text() 
    morse_to_text = {'.-': 'а', 
                    '-...': 'б', 
                    '.--': 'в', 
                    '--.': 'г', 
                    '-..': 'д', 
                    '.': 'е', 
                    '...-': 'ж', 
                    '--..': 'з', 
                    '..': 'и', 
                    '.---': 'й', 
                    '-.-': 'к', 
                    '.-..': 'л', 
                    '--': 'м', 
                    '-.': 'н', 
                    '---': 'о', 
                    '.--.': 'п', 
                    '.--.': 'р', 
                    '...': 'с', 
                    '-': 'т', 
                    '..-': 'у', 
                    '..-.': 'ф', 
                    '....': 'х', 
                    '-.-.': 'ц', 
                    '---.': 'ч', 
                    '----': 'ш', 
                    '--.-': 'щ', 
                    '.--.-.': 'ъ', 
                    '--.-.': 'ы', 
                    '--.-.': 'ь', 
                    '..-..': 'э', 
                    '..--': 'ю', 
                    '.-.-': 'я'} 
      
    #content = Clean_stroke(content) 
    result = [] 
      
    for element in content: 
        result.append(morse_to_text[element]) 
 
    ui.lineEdit_4.setText(str(result)) 
    return result 
frequency = 1000 
По дате
По рейтингу
Аватар пользователя
Мудрец

Просто поменять местами значения и ключи

1234
 v = rus_to_morse.values() 
k = rus_to_morse.keys() 
result = dict(zip(v,k)) 
print(result) 

Получим искомое
{'.-': 'а', '-...': 'б', '.--': 'в', '--.': 'г', '-..': 'д', '.': 'е', '...-': 'ж', '--..': 'з', '..': 'и', '.---': 'й', '-.-': 'к', '.-..': 'л', '--': 'м', '-.': 'н', '---': 'о', '.--.': 'п', '.-.': 'р', '...': 'с', '-': 'т', '..-': 'у', '..-.': 'ф', '....': 'х', '-.-.': 'ц', '---.': 'ч', '----': 'ш', '--.-': 'щ', '.--.-.': 'ъ', '-.--': 'ы', '-..-': 'ь', '..-..': 'э', '..--': 'ю', '.-.-': 'я'}

Аватар пользователя
Ученик

Попроси у бота в телеграме (chatgpt) Я через минуту-три пойду просить у него такой код