将单词拆分为字母,使字母成为字典中的一个键。[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方式执行以下操作:
莫尔斯
空间和数字呢?空间和数字呢?