【发布时间】:2016-08-19 02:01:54
【问题描述】:
我对编程非常陌生(6 周,在网上自学了“codecademy”和“python the hard way”)。我决定是时候开始尝试在没有方向的情况下编写代码了,我的第二个项目碰壁了。
我正在尝试制作一个“秘密编码器”,它采用 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:这是我在 * 上的第一篇文章,希望我能按照我应该的方式做所有事情。
编辑:由于我还不能提供声誉,我将在这里感谢大家的有用回答。我现在可以更清楚地看到我的错误在哪里,我将利用此处提供的信息来修复我的代码并努力正确理解它。我也可以看到解决这类问题有更多合乎逻辑和直接的方法。功能对我来说仍然有点模糊,但我想这么早是正常的。
【问题讨论】:
-
你需要循环输入,而不是字母,并用 '' 加入每个字符
-
想象一下这种情况......你的字符串中有一个
a,你循环并将所有a更改为bs,但是随后,你循环并更改所有bs 到cs(其中可以包括您已更改为bs 的as 等...) -
:D 伙计,我喜欢你的热情。 Python 既方便又强大,因此类似的练习将是使用实际的加密解决方案来加密您的消息 - 亲眼看看使用 Python *.com/questions/30056762/… 有多简单 :)
-
正如许多其他人所说,您可以像
for e in entry: result += letters[e]...那样进行迭代,python 将为您完成剩下的工作。值得你学习的东西(越早越好)是你不应该修改你正在迭代的对象,这将在未来为你省去很多麻烦。
标签: python python-2.7 function dictionary raw-input