我对编程非常陌生(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”,依此类推。
我完全迷失的地方是,当我用数字替换字典中的每个值时,它工作得很好。
这就是要点,我真的不明白我的代码有什么问题。
预先感谢您的帮助。
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/