【发布时间】:2013-07-21 21:25:34
【问题描述】:
我正在尝试通过将每个字母替换为前面两个位置的字母来修改字符串。例如'a' 替换为 'c','b' 替换为 'd'。唯一的例外是“y”应该被“a”替换,“z”应该被“b”替换(循环回到开始)。
我已经为它编写了以下代码,这似乎可以达到目的,但是输出格式有点破坏它。
string = "g fmnc wms bgblr rpylqjyrc gr zw fylb."
print string
for i in string:
if i.isalpha():
if ord(i)>120:
print chr(ord(i)-24),
else:
print chr(ord(i)+2),
else:
print i
输出:
g fmnc wms bgblr rpylqjyrc gr zw fylb.
i h o p e y o u d i d n t t r a n s l a t e i t b y h a n d .
预期输出:
g fmnc wms bgblr rpylqjyrc gr zw fylb.
i hope you didnt translate it by hand.
有没有其他更快的方法来解决这个问题?
【问题讨论】:
-
from string import translate并使用它。 -
感谢以下作为替代方法
intab = "abcdefghijklmnopqrstuvwxyz" outtab= "cdefghijklmnopqrstuvwxyzab" trantab = maketrans(intab, outtab) print string.translate(trantab) -
cs50x?真的很好的课程:)
-
顺便说一下,这称为Caesar cipher 或移位密码。 SO上有很多关于这个的问题。
-
@korylprince 谢谢你提供的信息。
标签: python string python-2.6