第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