把一个单词分成几个字母,这样字母就成了字典里的一个键。[Python]

2024-06-06 08:38:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个莫尔斯电码翻译,你可以把一个字母打印出相应的代码,反之亦然。然而,这个程序一次只接受一封信。我怎样才能让它接受一个词?这是我的密码:

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

letters_to_morse = {letter: code for code, letter in MorseCode.items()}

print "Type 'help' for the morse code."
print "Type 'end' to exit the program.\n"
while True:
    code = raw_input("Enter code:")
    if code in MorseCode:
        print MorseCode[code]
    elif code in letters_to_morse:
        print letters_to_morse[code]

问题是:有没有办法输入一个单词,然后将该单词拆分为每个字母,这样每个字母就可以成为字典的一个键来打印出值? 示例:单词“boy”将被拆分为“b”、“o”、“y”,然后程序将打印出来:-。。。----。--

到目前为止我尝试的是:

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

Inverse_Dictionary = {v:k for k,v in Dictionary.iteritems()}

while True:
    x = raw_input("Enter:")
    for letter in list(x):
        if letter in Dictionary:
            print (Dictionary[letter])
        elif letter in Inverse_Dictionary:
            print(Inverse_Dictionary[letter])
        else:
            print("Not good")

成功了。当我输入“男孩”时,它打印出来:-。。。----。--但当我试图进入-。。。----.-,它不断打印出“不好”

谁能告诉我哪里出错了?你知道吗


Tags: toin程序formorsedictionarytype字母
3条回答

我会尝试以下方法:

letters_to_morse = {letter: code for code, letter in MorseCode.items()}

string_to_convert = raw_input('Enter message you want to translate to morse...')

trans = ''
for char in string_to_convert:
    if char.isdigit():
        trans = trans + letters_to_morse[int(char)]
    elif char == ' ':
        trans = trans + ' '
    else:
        trans = trans + letters_to_morse[str.upper(char)]


print trans

list(x)返回键入字符的列表。所以呢

list(' -... --- -.--,')

会回来的

[' ', '-', '.', '.', '.', ' ', '-', '-', '-', ' ', '-', '.', '-', '-', ',']

你需要一种使你的意见多样化的方法。例如,在每个字母/莫尔斯电码之间留一个空格,然后执行以下操作:

while True:
    x = raw_input("Enter:")
    for letter in x.split(' '):
        if letter in Dictionary:
            print (Dictionary[letter])
        elif letter in Inverse_Dictionary:
            print(Inverse_Dictionary[letter])
        else:
            print("Not good")

改变

for letter in list(x):

for letter in x.split():

还有Inverse_Dictionary = {v:k for k,v in Dictionary.iteritems()},但是Dictionary没有定义,应该是Inverse_Dictionary = {v:k for k,v in MorseCode.iteritems()}

相关问题 更多 >