Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将单词拆分为字母,使字母成为字典中的一个键。[Python]_Python_String_Dictionary - Fatal编程技术网

将单词拆分为字母,使字母成为字典中的一个键。[Python]

将单词拆分为字母,使字母成为字典中的一个键。[Python],python,string,dictionary,Python,String,Dictionary,我做了一个莫尔斯电码翻译,你可以在里面输入一封信,打印出相应的电码,反之亦然。然而,该程序仅限于一次接受一封信。我怎样才能让它接受一个词?这是我的密码: MorseCode = {'.-':'A', '-...':'B', '-.-.':'C', '-..':'D', '.':'E', '..-.':'F', '--.':'G',

我做了一个莫尔斯电码翻译,你可以在里面输入一封信,打印出相应的电码,反之亦然。然而,该程序仅限于一次接受一封信。我怎样才能让它接受一个词?这是我的密码:

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")
成功了。当我输入“BOY”时,它打印出来了:-…--但是当我想进去的时候-,它一直在打印“不好”

有人能告诉我哪里出了问题吗?

改变

for letter in list(x):

另外,您还得到了
Inverse\u Dictionary={v:k代表k,v在Dictionary.iteritems()}
,但是
Dictionary
未定义,它应该是
Inverse\u Dictionary={v:k代表k,v在MorseCode.iteritems()}
更改

for letter in list(x):

此外,您还得到了
Inverse\u Dictionary={v:k代表k,v在Dictionary.iteritems()}
,但是
Dictionary
未定义,它应该是
Inverse\u Dictionary={v:k代表k,v在MorseCode.iteritems()}

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")
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")

我想尝试一下:

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

我想尝试一下:

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

此代码以pythonical方式执行以下操作:

莫尔斯
此代码以pythonical方式执行以下操作:

莫尔斯
空间和数字呢?空间和数字呢?