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

2024-10-03 15:29:38 发布

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

我正试图用字典中的单词替换字符串中的字母。例如:home应该输出“Hotel”、“Oscar”、“Mike”、“Echo”。但是,如果我键入rain,它将输出raiNovember。下面是我的代码。有人能帮我弄清楚为什么它不起作用吗?短暂性脑缺血发作

我是Python新手,我正在努力学习字典


Tags: 字符串代码echohome键入字典字母单词
3条回答

词典部分似乎大部分有效,但其他答案并未真正解决某些问题:

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

因此,我对加工部分的建议是:

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

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

修改您的代码以实现此目的,它现在应该在您打印到控制台时输出您想要的内容

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)

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

  1. 首先,run:r被罗密欧取代,因此单词=Romeoain
  2. 其次,run:a被Alpha替换,因此words=rAlphain
  3. 第三,run:i被印度取代,因此words=raIndian
  4. 最后,run:n被11月取代,因此words=rai11月

因为“words”未初始化为null,即words=”“

因此,文字的最新价值被打印出来,即RAINOVERMBER

正确的代码如下所示:

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)

相关问题 更多 >