Автор оригинала: Robin Andrews.
В этой статье мы узнаем, как использовать программирование Python для преобразования сообщений с английского на код Morse и наоборот. Мы также узнаем, как играть в версию Morse Code Aloud, используя Pygame и аудиофайлы, содержащие звуковые образцы.
Код Морзе был изобретен Самюэлем Морсом как способ передавать сообщения на большие расстояния, когда единственная доступная технология работала, отправив электрические импульсы на другие машины. Вы не могли использовать голос или текст, поэтому был новый способ получения сообщений по всем необходима.
Код состоит из коротких и длинных импульсов, часто называемых Точки и тире И комбинации этого представляют собой различные буквы, цифры и символы, которые, в свою очередь, могут быть объединены в слова для формирования полных сообщений.
Python Morse Code Code Converter Program Listing
Программа Python ниже определяет словарь English_to_morse который содержит отображения между буквами и цифрами, а последовательности точек и тире, которые представляют их в Морзе. Обратная, Morse_to_English Затем создается программно.
Затем мы определяем две функции для выполнения фактических преобразований, оба из которых используют то, что я называю Картина аккумулятора , где вы начинаете с пустого контейнера (A List , здесь) и измените его, как вы циклически через некоторую коллекцию (символы в сообщении в этом случае).
ENGLISH_TO_MORSE = {'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': '--..', '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',
'5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.'}
# Generate MORSE_TO_ENGLISH from ENGLISH_TO_MORSE
MORSE_TO_ENGLISH = {}
for key, value in ENGLISH_TO_MORSE.items():
MORSE_TO_ENGLISH[value] = key
def english_to_morse(message):
morse = [] # Will contain Morse versions of letters
for char in message:
if char in ENGLISH_TO_MORSE:
morse.append(ENGLISH_TO_MORSE[char])
return " ".join(morse)
def morse_to_english(message):
message = message.split(" ")
english = [] # Will contain English versions of letters
for code in message:
if code in MORSE_TO_ENGLISH:
english.append(MORSE_TO_ENGLISH[code])
return " ".join(english)
def main():
while True:
response = input("Convert Morse to English (1) or English to Morse (2)? ").upper()
if response == "1" or response == "2":
break
if response == "1":
print("Enter Morse code (with a space after each code): ")
morse = input("> ")
english = morse_to_english(morse)
print("### English version ###")
print(english)
elif response == "2":
print("Enter English text: ")
english = input("> ").upper()
morse = english_to_morse(english)
print("### Morse Code version ###")
print(morse)
if __name__ == "__main__":
main()
Образец вывода:
Convert Morse to English (1) or English to Morse (2)? 1 Enter Morse code (with a space after each code): > ... --- ... ### English version ### S O S
Образец вывода:
Convert Morse to English (1) or English to Morse (2)? 2 Enter English text: > SOS ### Morse Code version ### ... --- ...
Python English – Morse Code Audio Converter
Мы можем сделать все веселее, добавив фактические звуки для воспроизведения версии сообщения Morse Code. Используемые звуковые файлы из Wikimedia И нужно будет загрузить и поместить в соответствующую папку относительно вашей программы Python. Я предоставил .zip папка, содержащая их. Не забудьте расстегнуть их в правильное место …
Audio файлы Morse Code
morse_code_audio.
Я набор Путь Но вы можете назвать это, что вам нравится.
Программа использует Pygame Из-за его удобных аудио возможностей. Вам нужно будет Установите Pygame Использование Пип Если у вас еще нет.
import pygame
import time
ENGLISH_TO_MORSE = {'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': '--..', '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',
'5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.'}
TIME_BETWEEN = 0.5 # Time between sounds
PATH = "morse_code_audio/"
def verify(string):
keys = list(ENGLISH_TO_MORSE.keys())
for char in string:
if char not in keys and char != " ":
print(f"The character {char} cannot be translated.")
raise SystemExit
def main():
print("### English to Morse Code Audio Converter ###")
print("Enter your message in English: ")
message = input("> ").upper()
verify(message)
pygame.init()
for char in message:
if char == " ":
print(" " * 3, end=" ") # Separate words clearly
time.sleep(7 * TIME_BETWEEN)
else:
print(ENGLISH_TO_MORSE[char.upper()], end=" ")
pygame.mixer.music.load(PATH + char + '_morse_code.ogg') # You will need these sound files
pygame.mixer.music.set_volume(0.1)
pygame.mixer.music.play()
time.sleep(3 * TIME_BETWEEN)
if __name__ == "__main__":
main()
Эта статья показала, как использовать Python для преобразования сообщений между английским и Morse Code, а также как воспроизводить сообщения Morse Code из звуковых файлов с помощью PyGame. Я надеюсь, что вы нашли это интересно и полезно. Счастливые вычисления!