第1关



1.题意说了,每个人在解决这个问题之前都三思而后行
2.由图可以看出,是将26个英文字母分别向后移动2位
3.但要注意,Z是换成了B,Y是换成了A,也就是形成了一个环状
== 如何将A-Z形成一个环状 ==
1.假设现在都已经是A-Z的ASCII码了。用括号表示为其ASCII码。
则 ((X) + 2 - (A) )% 26 + (A)即为所求2.将A-Z变为ASCII码是用ord()函数
3.将 ASCII码变为字符用chr()函数
// Ada
text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
result = ""
for c in text:
if c < 'a' or c > 'z':
result += c
else:
result += chr((ord(c) + 2 - ord('a')) % 26 + ord('a'))
print(result)
输出的结果:
i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that’s why this text is so long. using string.maketrans() is recommended. now apply on the url.
提示告知可以使用string.maketrans().

通过str.maketrans()创建一个映射表。然后使用str.maketrans()根据映射表将一个字符串转换成另一个字符串。
// Ada
text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
table = str.maketrans("abcdefghijklmnopqrstuvwxyz", "cdefghijklmnopqrstuvwxyzab")
result = text.translate(table)
print(result)
now apply on the url.
当前url是 http://www.pythonchallenge.com/pc/def/map.html
联想到上一关是更改0,这一关应该是更改map.
用这一关的方法将map更改为 ocr
得到下一关的地址:
http://www.pythonchallenge.com/pc/def/ocr.html
本文介绍了一个基于Python的字符串加密与解密挑战,通过将字母表形成环状结构,实现对文本的加密,并提供了两种解密方法:手动替换和使用str.maketrans()函数。最终通过解密得到了下一关的网址。
1570

被折叠的 条评论
为什么被折叠?



