2014-10-12 47 views
-1

用户输入转换为OTAN拼音字母表的单词。将字符串转换为OTAN拼音字母表的字典

我必须使用一本字典,我把这个代码:

def otan(): 


    dictionary = {'A':'Alpha', 'B':'Bravo','C':'Charlie', 'D':'Delta', 'E':'Echo', 'F':'Foxtrot', 'G':'Golf', 'I':'India', 'J':'Juliet', 'K':'Kilo', 'L':'Lima', 'M':'Mike', 'N':'November', 'O':'Oscar', 'P':'Papa', 'Q':'Quebec', 'R':'Romeo', 'S':'Sierra', 'T':'Tango', 'U':'Uniform', 'V':'Victor', 'W':'Whiskey', 'X':'Xray', 'Y':'Yankee', 'Z':'Zulu'} 
    input('Enter a word:') 

otan() 

我输入一个字为例GH

但是出现这样的:NameError: name 'GH' is not defined

我不明白的错误,因为字典包括字母G和H

+2

肯定的,但他们是两个键不一个,而实际上H是不是在你的字典 – 2014-10-12 10:16:27

+0

请发布完整的代码,再现问题。 – user763305 2014-10-12 10:21:35

+0

该错误不存在,但结果是不正确的,因为蟒蛇打印GH不高尔夫酒店 – David 2014-10-12 10:26:05

回答

0

您需要单独访问每个键和使用raw_input,GH将两个键不是一个

dictionary = {'A':'Alpha', 'B':'Bravo','C':'Charlie', 'D':'Delta', 'E':'Echo', 'F':'Foxtrot', 'G':'Golf',"H":"Hotel", 'I':'India', 'J':'Juliet', 'K':'Kilo', 'L':'Lima', 'M':'Mike', 'N':'November', 'O':'Oscar', 'P':'Papa', 'Q':'Quebec', 'R':'Romeo', 'S':'Sierra', 'T':'Tango', 'U':'Uniform', 'V':'Victor', 'W':'Whiskey', 'X':'Xray', 'Y':'Yankee', 'Z':'Zulu'} 

inp = raw_input('Enter a word:') 
print(" ".join(map(dictionary.get,inp))) 
Enter a word:GH 
Golf Hotel 
-2

您正在使用Python2,因此您需要使用raw_input('Enter word:')

接下来,当你从用户那里得到的话,你需要为每个字母,从你的字典上的相应字获取

d = {'A':'Alpha', 'B':'Bravo','C':'Charlie', 'D':'Delta', 'E':'Echo', 'F':'Foxtrot', 'G':'Golf', 'I':'India', 'J':'Juliet', 'K':'Kilo', 'L':'Lima', 'M':'Mike', 'N':'November', 'O':'Oscar', 'P':'Papa', 'Q':'Quebec', 'R':'Romeo', 'S':'Sierra', 'T':'Tango', 'U':'Uniform', 'V':'Victor', 'W':'Whiskey', 'X':'X-ray', 'Y':'Yankee', 'Z':'Zulu'} 

word = raw_input('Enter word:') 
for letter in word: 
    print(d.get(letter.upper()), end='') 

写同一回路更简单的方法是:

word = raw_input('Enter word:') 
print(' '.join(d.get(letter.upper(), letter) for letter in word)) 

下面是一个样品运行:

>>> word = raw_input('Enter word:') 
Enter word:PYTHON 
>>> print(' '.join(d.get(letter.upper(), letter) for letter in word)) 
Papa Yankee Tango H Oscar November 

您在原始字典中缺少H,这就是它显示原样的原因。

+0

好吧,但我怎么能分开最后的结果,例如,用户输入单词PYTHON所有在一起,我希望结果将是爸爸洋基探戈酒店奥斯卡十一月。 (由空格分开) – David 2014-10-12 10:33:28

0

您的意思是?

def otan(word): 
    dictionary = {'A':'Alpha', 'B':'Bravo','C':'Charlie', 'D':'Delta', 'E':'Echo', 'F':'Foxtrot', 'G':'Golf', 'I':'India', 'J':'Juliet', 'K':'Kilo', 'L':'Lima', 'M':'Mike', 'N':'November', 'O':'Oscar', 'P':'Papa', 'Q':'Quebec', 'R':'Romeo', 'S':'Sierra', 'T':'Tango', 'U':'Uniform', 'V':'Victor', 'W':'Whiskey', 'X':'Xray', 'Y':'Yankee', 'Z':'Zulu'} 
    phon = [dictionary[w] for w in word] 
    return ' '.join(phon) 

word = raw_input('Enter word: ') 
print otan(word) 

BTW。如果你想在你的dictionary进入字GH没有H

+0

是的,谢谢你 – David 2014-10-12 10:32:19