【发布时间】:2016-05-09 12:41:00
【问题描述】:
问题陈述:
ROT13 是一种简单的字母替换密码,它用字母表中的 13 个字母替换一个字母。 ROT13 是凯撒密码的一个例子。
创建一个函数,该函数接受一个字符串并返回使用 Rot13 加密的字符串。如果字符串中包含数字或特殊字符,则应按原样返回。只有拉丁/英语字母表中的字母应该被移动,就像在原始的 Rot13“实现”中一样。
请注意,在 Python 中使用“编码”被视为作弊。
我的代码:
from string import *
def rot13(message):
melist = list(message)
for i in message:
lpos = index(letters,i)
if i.islower():
print lpos
melist[index(message,i)] = lower(letters[lpos + 13])
elif i.isupper():
try:
melist[index(message,i)] = upper(letters[lpos + 13])
except IndexError:
melist[index(message,i)] = upper(letters[lpos + 13 - 52])
return ''.join(melist)
这个东西可以很好地转换除了最后一个字母之外的字符串
例如,如果你这样做:
>>> rot13('test')
'grft'
最后一个字符't'虽然应该改变,但我不知道我在哪里做错了。一些帮助将不胜感激。
【问题讨论】:
-
string模块已弃用! -
嗯?建议使用
'mystring.index(i)'而不是import string; string.index('mystring', i) -
@linusg 你在
string哪里看到了整个模块的弃用? -
@DisplayName 好的,没错,不是整个
string模块已被弃用,只有那些包含在str类中的函数不应再使用(如index()和 @ 987654331@等)
标签: python string encryption