应该有不少人都知道这个非常有意思的python网站,推荐给不知道的朋友们:
http://www.pythonchallenge.com/
点击开始挑战后,就进入到热身题:
warm up
看到提示是修改url,也就是根据图片内容得到答案修改url的地址即可进入到下一题。python可迅速计算出答案是274877906944, 将网址中的0修改为这个数,进入到第一关。
1.根据提示可以得到K应该转化为M等等,字母后移了两个,那么破解下边的一段话就是:
chr_list = [chr(i) for i in range(97, 123)] # 得到26个字母
s = "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."
answer = ""
for i in s:
if i in chr_list:
index_i = chr_list.index(i)
if index_i <= 23:
answer += chr_list[index_i + 2]
elif index_i == 24:
answer += "a"
else:
answer += "b"
else:
answer += i
print(answer)
翻译过来这句话就是:
"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()去实现。注意python3中string.maketrans()会报错,应该str.maketrans()。
此时的网址是http://www.pythonchallenge.com/pc/def/map.html
,将map按照规则改成ocr,即可进入下一关。
根据提示,是要得到书中的字母,可能是在源代码中。查看源代码可以发现:
characters
最上面的话提示找到最稀有的字符。主要考正则匹配。
import requests, re
from collections import Counter
url = 'http://www.pythonchallenge.com/pc/def/ocr.html'
r = requests.get(url, timeout=30)
html = r.text
text = re.findall(r'<!--.*-->.*<!--(.*)-->', html, re.S)
chr_list = []
for i in text[0]:
chr_list.append(i)
cal_chr = Counter(chr_list)
print(cal_chr)
最终可输出:
cal_chr
可见最少的就是equality了。将网址换掉,可以进入到下一关。
后面的关卡还会考验对网页、对图片或者对压缩文件等的操作,非常全面。感兴趣的可以去体验一下~
欢迎关注公众号~
生信编程日常
网友评论