/ / Cách viết Trình dịch mã Morse bằng Python

Cách viết Trình dịch mã Morse bằng Python

Mã Morse đã tồn tại từ đầu những năm 1800 và đã tìm được đường đến kỷ nguyên kỹ thuật số. Từ vai trò là phương tiện liên lạc quan trọng trong Chiến tranh thế giới thứ hai đến việc gửi tin nhắn được mã hóa trong ngành hàng không và hàng hải, mã Morse luôn ở đây.


Nếu bạn chưa biết về ngôn ngữ hấp dẫn này, hãy sẵn sàng không chỉ khám phá mã Morse mà còn xây dựng trình dịch của riêng bạn bằng Python.


Mã Morse là gì?

Mã Morse là một phương thức giao tiếp trong đó bạn mã hóa các ký tự văn bản thành một chuỗi tiêu chuẩn gồm hai tín hiệu có thời lượng khác nhau, được biểu thị bằng dấu chấm và dấu gạch ngang. Mã Morse lấy tên từ Samuel Morse, một trong những người phát minh ra điện báo. Bạn có thể ghi nhớ nó và truyền nó qua sóng âm thanh hoặc ánh sáng khả kiến ​​mà các giác quan của con người có thể cảm nhận được.

Độ dài của mã Morse tương đương với tần suất sử dụng bảng chữ cái đó của chúng ta và bạn có thể thấy rằng mã Morse chỉ định chữ cái phổ biến nhất trong ngôn ngữ tiếng Anh, E, cho một dấu chấm.

Bạn có thể sử dụng các ứng dụng và phần mềm mã Morse miễn phí này để gửi tin nhắn được mã hóa cho nhau. Mặt khác, việc học mã Morse khá đơn giản và bạn có thể học nó trong vòng một tháng nếu thực hành nhiều. Để giúp bạn bắt đầu, đây là chín trang web học mã Morse miễn phí.

Cách xây dựng trình dịch mã Morse bằng Python

Bắt đầu bằng cách định nghĩa một từ điển Python có tên MORSE_CODE_DICT để lưu trữ các giá trị mã Morse. Các phím sẽ là các chữ cái trong bảng chữ cái tiếng Anh, với chuỗi dấu chấm hoặc dấu gạch ngang thích hợp làm giá trị tương ứng. Sử dụng từ điển, bạn có thể nhanh chóng tra cứu bất kỳ khóa nào với giá trị tương ứng của nó.

 MORSE_CODE_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':'--..',
                    '1':'.----', '2':'..---', '3':'...--',
                    '4':'....-', '5':'.....', '6':'-....',
                    '7':'--...', '8':'---..', '9':'----.',
                    '0':'-----', "https://www.smartreviewaz.com/python-morse-code-translator-write/,":'--..--', '.':'.-.-.-',
                    '?':'..--..', "https://www.smartreviewaz.com/":'-..-.', '-':'-....-',
                    '(':'-.--.', ')':'-.--.-' }

Khai báo một hàm có tên mã hóa chấp nhận thông điệp như một tham số đầu vào. Bên trong hàm, khởi tạo một biến có tên mật mã với một chuỗi rỗng. Bạn sẽ sử dụng điều này để tạo và lưu trữ tin nhắn được mã hóa. Tiếp theo, khai báo một vòng lặp for lặp qua từng chữ cái trong tin nhắn.

Nếu chữ cái không phải là khoảng trắng, hãy chuyển nó vào từ điển để tra cứu. Từ điển trả về giá trị mã More tương ứng dựa trên khóa. Thêm khoảng trắng để phân tách các ký tự của mã Morse và sử dụng tốc ký += toán tử để nối nó với mã thu được từ từ điển. Nếu chữ cái là khoảng trắng, hãy thêm một khoảng trắng vào mật mã; Mã Morse phân tách các từ bằng hai dấu cách liên tiếp.

 def encrypt(message):
    cipher = ""
    for letter in message:
        if letter != " ":
            cipher += MORSE_CODE_DICT[letter] + " "
        else:
            cipher += " "
    return cipher

Khai báo một hàm có tên decrypt chấp nhận thông điệp như một tham số đầu vào. Thêm một khoảng trắng ở cuối, sử dụng toán tử tốc ký để truy cập ký tự cuối cùng của mã Morse. Khởi tạo hai biến, giải mã và văn bản để giữ các chuỗi rỗng. Biến giải mã sẽ giữ câu được giải mã bao gồm bảng chữ cái tiếng Anh trong khi bạn sử dụng citext để lưu trữ từng chữ cái của mã Morse.

Lặp lại vòng lặp for chạy qua từng chữ cái của mã Morse. Nếu chữ cái không phải là khoảng trắng, hãy khởi tạo một biến đếm i để theo dõi số lượng khoảng trắng bằng 0 và lưu trữ mã Morse của một ký tự đơn trong citext. Mặt khác, chữ cái là một khoảng trắng, vì vậy hãy tăng bộ đếm lên một.

Nếu bộ đếm bằng hai, điều đó có nghĩa là bạn phải thêm khoảng trắng vào bộ giải mã biến từ được giải mã. Nếu không, hãy truy cập các khóa bằng các giá trị của chúng. Để thực hiện việc này, hãy lặp lại các cặp khóa-giá trị trong từ điển bằng cách sử dụng hàm mục. Nếu citext bằng giá trị, hãy thêm khóa tương ứng vào biến giải mã bằng toán tử tốc ký.

Cuối cùng, xóa citext để nhận chữ cái tiếp theo và trả lại câu đã giải mã thu được cho lời gọi hàm.

 def decrypt(message):
    message += " "
    decipher = ""
    citext = ""

    for letter in message:
        if letter != " ":
            i = 0
            citext += letter
        else:
            i += 1

            if i == 2:
                decipher += " "
            else:
                for key, value in MORSE_CODE_DICT.items():
                    if citext == value:
                        decipher += key

                citext = ""

    return decipher

Kiểm tra các chức năng với một số đầu vào mẫu. Bắt đầu bằng cách khởi tạo một biến có tên thông điệp với từ hoặc câu bạn muốn mã hóa. Sử dụng phía trên để chuyển đổi tất cả các chữ cái thành chữ hoa và chuyển nó sang hàm mã hóa làm đối số. Mã Morse chỉ chứa các chữ hoa, là chìa khóa trong từ điển. Điều này cũng giúp tránh kiểm tra thời gian chạy không cần thiết đối với trường hợp hợp lệ.

In giá trị kết quả để xem mã Morse tương đương với câu gốc.

Sau đó, lưu trữ mã Morse trong biến thông báo và chuyển mã đó cho chức năng giải mã. In kết quả và kiểm tra xem nó có đúng không.

Thay vì mã hóa cứng đầu vào, bạn có thể chấp nhận nó từ người dùng bằng đầu vào() hàm số.

 message = "Make Use Of"
result = encrypt(message.upper())
print(result)

message = "-- .- -.- . ..- ... . --- ..-."
result = decrypt(message)
print(result)

Đầu ra của Trình dịch mã Morse trong Python

Chương trình Python dịch từng chữ cái trong bảng chữ cái tiếng Anh sang mã Morse tương đương và hiển thị nó trên màn hình đầu ra của thiết bị đầu cuối như được hiển thị. Nếu bạn sao chép đầu ra thu được và chuyển nó để giải mã, bạn sẽ nhận được văn bản gốc mà bạn đã chuyển vào trước đó. Điều này xác minh rằng bản dịch hoạt động hoàn hảo.

Đầu ra của Trình dịch mã Morse trong Python

Ứng dụng di động cho mã Morse

Trình dịch mã Morse có sẵn miễn phí ngay trong tầm tay bạn. Hơn hàng trăm ứng dụng như Morse Mania, Morse Trainer, Morse Code Reader, Morse Code Keyboard và Morse Code Translator có sẵn trên các nền tảng khác nhau. Thật ngạc nhiên, nó thậm chí còn được hỗ trợ bởi GBoard – Bàn phím Google.

Để truy cập Mã Morse trên Gboard của bạn, hãy mở biểu tượng Cài đặt trên Gboard, chọn Ngôn ngữ và nhấn vào Tiếng Anh (Mỹ). Vuốt sang phải qua các tùy chọn, rồi chọn mã Morse. Bàn phím của bạn hiện hỗ trợ chèn Mã Morse cùng với các dịch vụ trợ năng, như TalkBack, Tiếp cận bằng nút chuyển hoặc Chọn để nói.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *