Python Challenge(0-2)

是个很有意思的网站,可以磨练使用python的技巧,每一关都有挑战,要编写相应的代码算出关键词,才可以获取下一关的url,还是很好玩的QAQ

LEVEL 0

显然是计算图片中的\(2^{38}\),结果为274877906944,所以url为http://www.pythonchallenge.com/pc/def/274877906944.html

print(2**38) #输出274877906944

LEVEL 1

仔细观察\(K→M,O→Q,E→G\)有什么规律,结论是后面的字母在字母表中都是前一个的索引加二,比如#\(K\)是第11个,\(M\)是第13个,所以我们也可以得出转换字符串的方法:

import string

a = "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. "

l = string.ascii_lowercase + "ab"#每次都是+2,所以后面多加了2个字母,这是小写字母表

def tran(s):

tmp =""

for i in s:

if i in l:#如果当前处理的字符是字母

id = l.index(i)

tmp += l[id+2]

else:

tmp += i

return tmp

print(tran(a))

#输出了

"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. "

#翻译过来就是:

我希望你不是徒手进行这个字符转换,这是计算机擅长的事情,徒手做是很低效的,所以我才把这个文本弄得这么长,将刚才你写的处理字符串的函数用在url上试试

显然,调用一下就把url中的map换成了ocr,得到了下一关的url:www.pythonchallenge.com/pc/def/ocr.html

LEVEL 2

显然第三关要看清楚图片上的文字是不可能的,下面提示的文字里面有page source,于是马上想到查看网页源代码,于是看到了如下内容:

然后就是一长串乱码

任务很显然,就是要找到下面很长一串代码中单独的元素,复制这么长的代码到ide里也不方便,所以可以用爬虫

import requests

from collections import Counter

text = requests.get("http://www.pythonchallenge.com/pc/def/ocr.html").text#获取HTML文档

final_text = text.split(""

q = Counter(final_text)#对里面的所有字符计数

t = [i for i in q if q[i]==1]#找出只出现一次的字符

print("".join(t))

#输出了equality

根据输出的内容很显然下一个网页的url为http://www.pythonchallenge.com/pc/def/equality.html

LEVEL 3

有了上一道题的经验,看了下图片和文字说明,题目的意思应该是:查找类似\(AAAbCCC\)这种格式的字符串,我果断查看了一下页面源代码,果然有一大堆文本在等着我去处理...

想起了正则表达式!,处理起来轻松多了

import requests

import re

text = requests.get("http://www.pythonchallenge.com/pc/def/equality.html").text

final_text = re.findall("", text, re.DOTALL)[-1]#re.DOTALL表示忽略换行符

ans = "".join(re.findall("[^A-Z]+[A-Z]{3}([a-z])[A-Z]{3}[^A-Z]+",final_text))

print(ans)

#输出了linkedlist

LEVEL 4

点击图片之后发现url变成了http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345

提示说下一个nothing的值,抱着试试看的态度接连输入了几个,发现这个linkedlist很长很长,所以写了如下代码

import requests

import re

preurl = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="

id = 12345

while True:

url = preurl + str(id)

text = requests.get(url).text

id = text.split(" ")[-1]

print(text)

#运行了一会之后终于出了结果peak.html

下一关的url为http://www.pythonchallenge.com/pc/def/peak.html

LEVEL 5

略坑,peakhell念快点就是pickle了,pickle是python的一个库,所以编写代码如下:

import pickle

from urllib.request import urlopen

import requests

text = pickle.load(urlopen("http://www.pythonchallenge.com/pc/def/banner.p"))

for line in text:

print("".join([k*v for k,v in line]))

输出结果为channel,所以下一关的url为http://www.pythonchallenge.com/pc/def/channel.html

LEVEL 6

习惯性地打开页面源代码,看到zip,下载http://www.pythonchallenge.com/pc/def/channel.zip后打开readme.txt文档看到

welcome to my zipped list.

hint1: start from 90052

hint2: answer is inside the zip

所以应该是要从90052.txt开始像之前的linkedlist一个个找下去,最后的输出是

Collect the comments.

翻zipfile的文档看到zipfile.comments,写了下代码

import zipfile, re

file = zipfile.ZipFile("channel.zip")

num = "90052"

comments = []

while True:

content = file.read(num + '.txt').decode("utf-8")

comments.append(file.getinfo(num + '.txt').comment.decode("utf-8"))

print(content)

match = re.search("Next nothing is (\d+)",content)

if match == None:

break

num = match.group(1)

print("".join(comments))

it's in the air. look at the letters.

the python challenge_The Python Challenge 谜题全解(持续更新)相关推荐

  1. python中的format什么意思中文-Python中format()格式输出全解

    格式化输出:format() format():把传统的%替换为{}来实现格式化输出 1.使用位置参数:就是在字符串中把需要输出的变量值用{}来代替,然后用format()来修改使之成为想要的字符串, ...

  2. python数据分析——pyecharts折线图全解

    折线图是排列在工作表的列或行中的数据可以绘制到折线图中.折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势. 下面我给大家介绍一下如何用pyecha ...

  3. Python 100个简单小例子(持续更新中)

    Python 100个简单小例子(持续更新中) 1 编写一个计算平年还是闰年的小例子其核心是年份可以整除4和400,且不是100的倍数且2000年是特殊年份为闰年! year = int(input( ...

  4. 2020年拼多多校招面试题及答案-最全最新-持续更新中

    大家好我是好好学习天天编程的天天 一个整天在互联网上种菜和砍柴的程序员 2020年拼多多校招面试题及答案-最全最新-持续更新中 2020年拼多多校招面试题一面-牛客网 2020年拼多多校招面试题二面- ...

  5. 操作系统面试题(史上最全、持续更新)

    尼恩面试宝典专题40:操作系统面试题(史上最全.持续更新) 本文版本说明:V28 <尼恩面试宝典>升级规划为: 后续基本上,每一个月,都会发布一次,最新版本,可以联系构师尼恩获取, 发送 ...

  6. 架构设计面试题 (史上最全、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 高并发学习社群 - 疯狂创客圈奉献给大家: 经典图书 - <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 + 涨薪必备 ...

  7. 2020年拼多多校招面试题及答案-最全最新-持续更新中(2)

    大家好我是好好学习天天编程的天天 一个整天在互联网上种菜和砍柴的程序员~ 2020年拼多多校招面试题及答案-最全最新-持续更新中(2) 2020年拼多多校招面试题一面 2020年拼多多校招面试题一面- ...

  8. HR面试题(史上最全、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  9. python后台架构Django开发全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 我的使用环境win8+python3.6+pycharm+django2.0 博主使用的是anaconda佩戴的python3.6,所以pyt ...

最新文章

  1. 据说程序员等电梯的时候都想过调度算法
  2. [Linux]VI相关操作
  3. L1相对于L2较稀疏的原因
  4. java catch getm_Java------异常处理机制
  5. linux 下 LibreOffice Writer 使用说明
  6. Ice_cream's world I HDU - 2120(并查集判环)
  7. jvm需要多长时间进行转义分析? 可能比您想象的要长。
  8. [html] 怎样在<pre>标签内不转义<和>符号(原样输出html标签)?
  9. 比较 Excel 中两列的差异,并用箭头标识和指向匹配结果
  10. windows下使用word2vec训练维基百科中文语料全攻略!(三
  11. NEC红外协议编码,38K红外遥控编码,红外遥控发射接收电路选型设计
  12. ND2D源码及范例工程(编译通过)
  13. Android滑动返回上一级界面
  14. 流畅的python和cookbook学习笔记(五)
  15. 在计算机中 用于完成系统配置的文件是,历年真题:全国2015年4月自考02323操作系统概论考试试卷以及答案...
  16. Python学习中的知识点小记录(廖雪峰)
  17. u9系统的使用方法仓库_用友U9--INV库存管理手册.pdf
  18. 使用阿帕奇服务器配置多个网站站点的方法
  19. 十隔日推算法_年、月、日、时干支推算法
  20. 用户登录,前后端如何交互判断是否登录超时!

热门文章

  1. vsftpd使用方法小结、Linux安装JDK出现“NoClassDefFoundError: /Object”的解决方案、ubuntu 12.04安装jdk
  2. google浏览器插件 开发 获取页面指定数据_程序员必备的4款Chrome插件,编程神器...
  3. 晋中学院计算机考研,晋中学院有多少人死在考研路上
  4. matlab的循环语句裁图,[MATLAB图像处理] 多幅图片处理的循环语句
  5. 中国的四大沙地,你都认识吗?
  6. 世界上最危险的20座七绝古寺,你敢去住一晚吗?
  7. 男女共厕,考验男生心理素质的时候到了......
  8. 心中一万只草泥马在奔腾是种怎样的体验?| 今日最佳
  9. 春节特惠活动┃不只是舒适,简直是享受,Google公司用的腰靠,到底有什么秘密?...
  10. sqlyog怎么设置默认值_物联网卡三网APN设置