-1

モールス信号を使用してメッセージをエンコード/デコードできるプログラムを作成する必要があります。

メッセージをエンコードするには、プログラムは英数字を含む入力ファイルを読み取り、対応するモールス符号化されたメッセージを出力する必要があります。

メッセージをデコードするために、プログラムはモールス信号を含むファイルを読み取り、英数字を出力します。

これは私がこれまでに持っているものですが、正しくデコードすることはできません:

import string

def to_from(text, dict_in):
    for i in text:
        if i.upper() in dict_in:
            print "%6s" % (dict_in[i]),
        else:
            print i, "not in dictionary"
    print

letters = {'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': '----*' 
        }

frommorse = dict((b,a) for a,b in letters.items())
text = raw_input('What is the translation you need?\n')
text=text.strip()

if text[0] in string.letters:
    to_from(text, letters)
else:
    to_from(text, frommorse)

*- をデコードしようとすると、A ではなく "E T" と出力されます。何が間違っているのでしょうか?

4

1 に答える 1

1

文字列をモールス符号にエンコードするには、これを試してください

 APNU = {'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': '----.' 
        }


string = 'yourstring'
for char in string:
    print APNU[char.upper()]

また

[APNU[char.upper()] for char in string]
于 2015-04-12T08:57:51.690 に答える