python 2.7 用字典中的值替换 raw_input 字符串

标签 python python-2.7 function dictionary raw-input

我对编程非常陌生(6周,通过“codecademy”和“python the hard way”在网上自学)。我决定是时候开始尝试在没有指导的情况下编写代码了,但我的第二个项目却碰壁了。

我正在尝试制作一个“ secret 编码器”,它采用 raw_input 字符串并将其中的每个字母替换为字母表中的下一个字母。由于我的知识非常有限,我认为字典应该是最好的选择。在“一点”谷歌搜索的帮助下,我写了这个:

alpha = {"a" : "b", "b" : "c", "c" : "d", "d" : "e", "e" : "f",  "f" : "g","g" : "h"
         , "h" : "i", "i" : "j", "j" : "k", "k" : "l", "l" : "m","m" : "n", "n" : "o"
         , "o" : "p", "p" : "q", "q" : "r", "r" : "s","s" : "t", "t" : "u", "u" : "v"
         , "v" : "w", "w" : "x", "x" : "y", "y" : "z", "z" : "a"}

entry = raw_input("Please write a sentence you want to encode: ")

def encode(entry, letters):
    for k, v in letters.iteritems():
        if k in alpha:
            entry = entry.replace(k, v)
    return entry
print encode(entry, alpha)

我遇到的问题是字符串中只有一半的字母被字典中的正确值替换。当“a”应该打印为“b”并且“b”应该打印为“c”时,“a”和“b”都将打印为“c”,依此类推。

illustration

我完全迷失的地方是,当我用数字替换字典中的每个值时,它工作得很好。

illustration bis

这就是要点,我真的不明白我的代码有什么问题。

预先感谢您的帮助。

PS:这是我在 stackoverflow 上的第一篇文章,希望我做了我应该做的一切。

编辑:由于我还不能给出声誉,我将感谢你们所有人的有用答案。我现在可以更清楚地看到我的错误在哪里,我将利用此处提供的信息来修复我的代码并努力正确理解它。我还可以看到有更多逻辑和直接的方法来解决此类问题。功能对我来说仍然有点模糊,但我想这么早这是正常的。

最佳答案

Xetnus 是正确的,您需要循环遍历条目变量而不是字母。也许是这样的

def encode(entry, letters):
    new_entry = ''
    for letter in entry:
        if letter in letters:
            new_entry += letters[letter]
    return new_entry
print encode(entry, alpha)

关于python 2.7 用字典中的值替换 raw_input 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39030037/

相关文章:

python - 将微秒格式化为小数点后两位(实际上是将微秒转换为几十微秒)

performance - Python 2.7 : List comprehension with "if-statement" runs very slowly

javascript - 这个 Node.js 代码似乎替换了同一函数中的函数实现,它有什么作用?

c - C 中的指针递归

php - 如何使用具有定义为第三个非可选参数的函数

python - 为什么 scipy poisson 没有 pdf(概率密度函数)方法?

python - 如何绘制具有不同西格玛的二维高斯?

python - 如何一次在 mongodb 中创建 100000 个条目?

python - 如何在异步属性上进行pydantic等待(tortoise-orm的反向ForeignKey)?

python - 存储整数列表的最有效方法