the python challenge_The Python Challenge 谜题全解(持续更新)

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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能对话引擎:两天快速打造疫情问答机器人

01微软AI技术开源知识库疫情机器人近一个月来,“新冠肺炎疫情”成了所有人的热点话题,抗击疫情的战役在全国紧张有序地进行着。随着全国各地的企业陆续复工,怎样防范、保护自己和家人成了当下每个人的焦点。为了配合奋战在一线的医护人员打赢…

数码管

题目背景 小明的单片机上面的LED显示屏坏掉了,于是他请你来为他修显示屏。 屏幕上可以显示0~9的数字,其中每个数字由7个小二极管组成,各个数字对应的表示方式如图所示: 题目描述 为了排除电路故障,现在你需要计算&am…

fh 幅频特性曲线怎么画fl_初学者怎么练习线条?教你如何画出流畅线条的技巧...

初学者怎么练习线条?怎样才能画出流畅线条?画出流畅线条有哪些技巧?想必这些问题都是绘画初学者们比较伤脑筋的问题,那么到底怎样才能画出流畅线条呢?今天灵猫课堂老师就在网络上收集整理了关于初学者怎么练习线条&…

.NET Core开发实战(第12课:配置变更监听)--学习笔记

12 | 配置变更监听:配置热更新能力的核心这一节讲解如何使用代码来监视配置变化并做出一些动作当我们需要追踪配置发生的变化,可以在变化发生时执行一些特定的操作配置主要提供了一个 GetReloadToken 方法,这就是跟踪配置的关键方法接着使用上…

icoding复习1,2

icoding复习 1 链表 倒数查找 1. 已知一个带有表头结点的单链表, 假设链表只给出了头指针L。在不改变链表的前提下,请设计一个尽可能高效的算法, 查找链表中倒数第k个位置上的结点(k为正整数)。 函数原型为:int lnk_s…

密电破译-dp

题目背景 墨家家主召集弟子的原因是因为截获了密电并破获了重大情报,“公主薨,国王失踪,墨家即将面临灭顶之灾”。 题目描述 密电是由大小写字母组成字符串,密电之所以能破译是因为墨家掌握了破解方法,密钥是一个整数…

ASP.NET Core Web API基于RESTFul APIs的集合结果过滤和分页

译者荐语:如何在RESTFul APIs中进行集合结果分页?还是用客户端来拼接链接地址么?原文来自互联网,由长沙DotNET技术社区【邹溪源】翻译。如译文侵犯您的版权,请联系小编,小编将在24小时内删除。在ASP.NET Co…

icoding复习6 图

icoding复习6 1. 邻接表1 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下: typedef int VertexType; typedef enum{ DG, UDG }GraphType; typedef struct ArcNode{ int adjvex; InfoPtr *info; stru…

python帮助系统函数_【Python】【基础知识】【内置函数】【help的使用方法】

原英文帮助文档:help([object])Invoke the built-in help system. (This function is intended for interactive use.) If no argument is given, the interactive help system starts on the interpreter console. If the argument is a string, then the string i…

统计二进制数-dp

题目描述 输入一个正整数m,请输出从0到m中每一个数字二进制数中含有1的个数的总和,由于数值较大结果需要模100000. 输入格式 一个m 输出格式 二进制数中含有1的个数的总和s 输入输出样例 输入 2 输出 2 输入 5 输出 7 说明/提示 样例说明 20%的数据 m<500 50%的数据 m<…

.net 微服务实践

l 前言本文记录了我的一次.net core 微服务架构实践经验&#xff0c;以及所用到的技术l 优点每个服务聚焦于一块业务&#xff0c;无论在开发阶段或是部署阶段都是独立的&#xff0c;更适合被各个小团队开发维护&#xff0c;团队对服务的整个生命周期负责&#xff0c;工作在独…

icoding复习3

icoding复习3 1. 不调用库函数&#xff0c;自己实现字符串的比较操作&#xff1a;该操作当比较的两个字符是都是字母&#xff0c;且两个字符互为大小写 &#xff08;如a和A、e和E&#xff09;时认为两个字符相同&#xff0c;否则不同&#xff0c;其比较结果按这两个字符的原值…

redis过期监听性能_基于Redis的延迟处理

延迟处理是一个非常常用的一个功能;例如, 下单成功后,在30分钟内没有支付,自动取消订单;延迟队列便是延迟处理中最常见的实现方式;先一起看下JDK中延迟队列是如何实现的.JUC的DelayQueue在JDK中, 提供了一套延迟队列的实现, 是JUC包中DelayQueue类.在使用时只需要让处理的元素对…

洛谷 P2040 打开所有的灯-dfs

题目背景 pmshz在玩一个益(ruo)智(zhi)的小游戏&#xff0c;目的是打开九盏灯所有的灯&#xff0c;这样的游戏难倒了pmshz。。。 题目描述 这个灯很奇(fan)怪(ren)&#xff0c;点一下就会将这个灯和其周围四盏灯的开关状态全部改变。现在你的任务就是就是告诉pmshz要全部打开这…

icoding复习4 数组 十字链表

icoding 复习4 1. 矩阵加法 实现三元组表示的两个稀疏矩阵的加法。 #define MAXSIZE 100 //假设非零元个数的最大值为100 typedef struct { int i,j; //非零元的行下标和列下标&#xff0c;i 和 j 从 1 开始计数&#xff0c;与数学中矩阵元素的…

【译】来看看WebWindow,一个跨平台的.NET Core webview 库

本文翻译自 ASP.NET 项目组的 Steve Sanderson 的博客&#xff0c;发表于 2019 年 11 月 18 日。Steve Sanderson 是 Blazor 最早的创造者。它类似于 Electron&#xff0c;但没有捆绑 Node.js 和 Chromium&#xff0c;也没有大部分 API。我的上一篇文章研究了如何用 web 渲染的…

sql if 和insert_拼多多面试:Mybatis是如何实现SQL语句复用功能的?

在工作中&#xff0c;往往有这样的需求&#xff0c;对于同一个sql条件查询&#xff0c;首先需要统计记录条数&#xff0c;用以计算pageCount&#xff0c;然后再对结果进行分页查询显示&#xff0c;看下面一个例子。<sql id"studentProperties"><!--sql片段-…

上元节的灯会(亮)-dfs

题目背景 上元佳节&#xff0c;庙会里举办着各式各样的庆典活动&#xff0c;牛宝也兴奋地参与其中。突然&#xff0c;他被一个新颖的点灯游戏所吸引&#xff0c;游戏要求最终点亮所有在场的花灯&#xff0c;每盏灯都有开关两种状态&#xff0c;每一次点击在场的一盏任意状态的花…

代码演示C#各版本新功能

代码演示C#各版本新功能C#各版本新功能其实都能在官网搜到&#xff0c;但很少有人整理在一起&#xff0c;并通过非常简短的代码将每个新特性演示出来。代码演示C#各版本新功能C# 2.0版 - 2005泛型分部类型匿名方法可以为null的值类型迭代器协变和逆变C# 3.0版 - 2007自动实现的…

icoding复习5 树 感觉难度巨大....

icoding 复习5 1. 先序遍历 已知二叉树按照二叉链表方式存储&#xff0c;利用栈的基本操作写出先序遍历非递归形式的算法&#xff1a; void pre_order(BiTree root); 二叉树的相关定义如下&#xff1a; typedef int DataType; typedef struct Node{ DataType data; …