繁体   English   中英

用字典中的单词替换字符串的每个字母

[英]Replace each letter of a string with words from a dictionary

我正在尝试用字典中的单词替换字符串中的字母。 例如:home 应该输出 'Hotel'、'Oscar'、'Mike'、'Echo'。 但是,如果我输入rain,它会输出raiNovember 下面是我的代码。 有人可以帮我弄清楚为什么它不起作用吗? TIA

我是 Python 新手,我正在尝试学习字典。

最好将每个字母对应的单词存储到列表中。 当您将字母循环到此列表中时,您可以附加与该字母对应的每个单词,并且您将在最后找到您要查找的内容。

修改您的代码以执行此操作,它现在应该在您打印到控制台时输出您想要的内容。

letters_to_words = {
    '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' : "X-Ray",
    'y' : "Yankee", 'z' : "Zulu"
}
sentence = input("Enter input: ")
sentence = sentence.lower()
words = []
for i in sentence:
    word = letters_to_words[i]
    words.append(word)

print(words)

“雨”这个词有4个字母。 因此你的循环将被执行四次。

  1. 首先,运行 : r被替换为 Romeo,因此 words= Romeo ain
  2. 其次,运行: a替换为 Alpha,因此 words=r Alpha in
  3. 第三,运行: i被 India 取代,因此 words = ra India n
  4. 最后,运行: n被替换为十一月,因此 words= rai十一月

由于 'words' 未初始化为 null,即,words = ""。

因此打印出最近的词值,即 raiNovember

正确的代码如下:

letters_to_words = {
    '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' : "X-Ray",
    'y' : "Yankee", 'z' : "Zulu"
}
sentence = input("Enter input: ")
sentence.lower()
words = ""
for i in sentence:
    words += letters_to_words[i]+" "   

print(words)

字典部分似乎主要起作用,但其他答案并没有真正解决一些问题:

  • 在任何情况下,将输入和输出分开,并且在迭代时不要尝试更改输入字符串。 romeoain代替并且仍然知道从哪里继续并不是那么容易。
  • 如果需要进一步处理(语言输出),请将更换部件分开
  • 为非字母输入做好准备,其中字典查找会抛出KeyError异常
  • 使用 Python 提供的有用结构,而不是您可能已经熟悉的结构。

所以我对处理部分的建议是:

    word_list = [letters_to_words.get(c, "?") for c in sentence.lower()]
    print ", ".join(word_list)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM