【Python challenge】通关代码及攻略(0-11)

时间:2022-03-22 09:40:12

前言:

最近找到一个有关python的游戏闯关,这是游戏中的思考及通关攻略

最开始位于:http://www.pythonchallenge.com/pc/def/0.html

第0关

【Python challenge】通关代码及攻略(0-11)

题目分析

提示hint告诉我们是要尝试更改URL地址,图中是2^38,猜测地址是该结果。

考察知识点

  • 这是才开始,提示我们网站怎么闯关,以及了解到python中int永远不会溢出,存在机制自动扩容。

代码及结果

print(2**38)

输出:274877906944

下一关:http://www.pythonchallenge.com/pc/def/274877906944.html

第1关

【Python challenge】通关代码及攻略(0-11)

题目分析

注意到字母替换,且K、M、E都是从字母表往后移了2位。学过的就会知道这即是凯撒密码。

最开始我用的是在线破解网站。破解后,发现可以使用string.maketrans()解决,先用maketrans建立一个映射table,然后使用translate函数

考察知识点

  • 字符串的处理,涉及string库

当然也可以不用string,使用[chr(i) for i in range(97,122)]来产生字母a-z。

代码及结果

import string
src = '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.' for i in range(1,26):
mapping = ''.maketrans(string.ascii_lowercase,string.ascii_lowercase[i:]+string.ascii_lowercase[:i])
print(src.translate(mapping))

输出: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.

这句话的意思即是将 map->ocr

下一关:http://www.pythonchallenge.com/pc/def/ocr.html

第2关

【Python challenge】通关代码及攻略(0-11)

题目分析

注意到,左下的信息就是告诉你如何查看上一关的官方答案。

【Python challenge】通关代码及攻略(0-11)

根据红色提示文字,获得信息:识别字符,可能在书中,可能在page source(网页源码)中

F12查看源码,可以看到在 body > font > font中看到信息

【Python challenge】通关代码及攻略(0-11)

find rare characters in the mess below,即是要做数据清洗

将需清洗内容复制放入文件‘src/ocr.txt’中,我这是相对路径,你可以随便设置,只要自己能打开即可

考察知识点

  • 简单数据清洗,涉及re库

代码及结果

import re

with open('src/ocr.txt','r') as f:
s = f.read()
rs = re.findall(r'[a-zA-Z0-9]+',s)
print(''.join(rs))

输出:equality

下一关:http://www.pythonchallenge.com/pc/def/equality.html

第3关

【Python challenge】通关代码及攻略(0-11)

题目分析

F12查看源码,在body > font看到:

【Python challenge】通关代码及攻略(0-11)

考察知识点

  • 简单数据清洗,与上一题类似涉及re库
  • 注意到hint,一个小写字母,两边精确的存在3个大写字母,即是xXXXxXXXx形式,仅取中间一个小写字母。

也可以使用request爬取网页源码。我保存在‘src/equality.txt’中

代码及结果

import re
with open('src/equality.txt','r') as f:
s = f.read()
rs = re.findall(r'[a-z][A-Z]{3}([a-z])[A-Z]{3}[a-z]',s,re.S)
print(''.join(rs))

输出:linkedlist

下一关:http://www.pythonchallenge.com/pc/def/linkedlist.html

第4关

【Python challenge】通关代码及攻略(0-11)

题目分析

  • 网页中只有简单的文字,linkedlist.php,很自然将其输入url中跳转

    【Python challenge】通关代码及攻略(0-11)

  • F12网页title为:follow the chain,提示我们urllib可能还有帮助,且大概要循环400次,下面发现一个可疑的链接,打开链接:出现下一个数字,一环扣一环如chain,我采用requests爬取,应为网页简单只有一个数字,所以不用解析

    【Python challenge】通关代码及攻略(0-11)

考察知识点

  • requests或者其他爬取库,re

代码及结果

import requests,re

def get_src(url):
respon = requests.get(url)
if respon.status_code == 200:
return re.findall(r'\d+',str(respon.content))[0] url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='
add = '12345'
count = 0
for i in range(400):
count += 1
add = get_src(url+add)
print(f'{count}:{add}',end = ' ')

异常后,我自需要修改add便可。

输出:

16044处异常:Yes. Divide by two and keep going.

82683处异常:You've been misleaded to here. Go to previous one and check.

82682处异常:There maybe misleading numbers in the text. One example is 82683. Look only for the next nothing and the next nothing is 63579

66831处异常:peak.html ,其实是进入下一关

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

第5关

【Python challenge】通关代码及攻略(0-11)

题目分析

  • pronounce it,直翻读它,F12发现:

【Python challenge】通关代码及攻略(0-11)

banner.p可疑,打开

惊了乱码,经过学习百度,发现要使用pickle模块——python对象序列化

save file 后缀为.p

报错:TypeError: a bytes-like object is required, not 'str'

解释:由于当前操作的字符串是bytes类型的字符串对象,并对该bytes类型的字符串对象进行按照str类型的操作

解决:open(file,'rb')

pickle.load(file)可以解码出一个二位列表

是真的鬼,最开始我都没想到这是字符图案。。。。。。

最后分析得出:列表中是元组,(字符,个数),分析数据,不难qwq得出解析后得到答案channel

考察知识点

  • python的pickle库

代码及结果

import pickle

with open('src/banner.p','rb') as f:
data = pickle.load(f) s = ''
for i in data:
for j in i:
s += j[0]*j[1]
s+='\n'
print(s)

输出:

【Python challenge】通关代码及攻略(0-11)

下一关:http://www.pythonchallenge.com/pc/def/channel.html

第6关

题目分析

  • 嘿嘿,有一个pay,有时候这图会裂开,有钱人。。。。

  • F12查看源码发现

    【Python challenge】通关代码及攻略(0-11)

    即是存在zip文件,下载文件。

    我是经过了两个阶段首先没有使用zipfile。

    【Python challenge】通关代码及攻略(0-11)

  • 需要收集压缩文件的注释 =_=# , 经过一波精彩的操作之后,我知道可以通过zipfile模块中的z.getinfo('90052.txt').comment得到注释

最后收集注释,注意编码问题,open 只能r/w,

考察知识点

  • 文件处理,zizpfile库

代码及结果

import zipfile,re

z = zipfile.ZipFile('src/channel.zip')

val = '90052'
count = 0
s = []
try:
while True:
count += 1
print(f'{count}:{val}')
file = f'{val}.txt'
with z.open(file,'r') as f:
s.append(z.getinfo(file).comment)
text = str(f.read(), encoding='UTF-8')
val = re.findall(r'\d+',text)[-1]
except:
s.append(z.getinfo(f'{val}.txt').comment)
print(val)
d = ''
for i in s:
d += str(i,encoding = 'utf-8') print(d)

输出:

【Python challenge】通关代码及攻略(0-11)

下一关:http://www.pythonchallenge.com/pc/def/hockey.html

第7关

【Python challenge】通关代码及攻略(0-11)

题目分析

  • 我是实在不懂这是什么意思,F12源代码,请求资源,都没有信息。最后认真读这段话后,哈哈哈。TM是氧气oxygen,强行解释look air。。。。。

考察知识点

  • 脑洞?鬼

代码及结果

输出:oxygen

下一关:http://www.pythonchallenge.com/pc/def/oxygen.html

后面还有很多关卡,后续更新。。。。。。

【Python challenge】通关代码及攻略(0-11)的更多相关文章

  1. Python Challenge 第 5 关攻略:peak

    # -*- coding: utf-8 -*- # @Time : 2018/9/26 14:03 # @Author : cxa # @File : pickledemo.py # @Softwar ...

  2. Python Challenge 第 4 关攻略:linkedlist

    代码 import requests url = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing={}" ...

  3. Python Challenge 第 2 关攻略:ocr

    text="那一大推乱码" 方案1 from collections import Counter print(Counter(text)) 方案2 import string & ...

  4. Windows Socket五种I/O模型——代码全攻略(转)

    Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操 ...

  5. python web工程师跳巢攻略

    python web工程师跳巢攻略 流程 一面问基础 二面问项目 三面问设计(经验) web请求的流程 浏览器 负载均衡 web框架 业务逻辑 数据库缓存 后端技术栈 python语言基础 语言特点 ...

  6. python——创建django项目全攻略(野生程序员到家养程序员的完美进化)

    新建工程 我用pycharm写代码,所以一般就用pycharm创建django工程.右上角File-New Project.选择路径,修改项目名称,确定.就可以创建一个新的django工程.     ...

  7. Python dict字典方法完全攻略(全)

    我们知道,Python 字典的数据类型为 dict,我们可使用 dir(dict) 来查看该类型包含哪些方法,例如: >>> dir(dict)['clear', 'copy', ' ...

  8. Win7下python Scrapy一站式搭建全攻略(内附相关下载链接)

    写在前面: 好久没有登录博客了,意外看到之前的几篇文章都有不错的阅读量,开心极了,不过没有什么点赞和评论,大概是没有给大家带来什么切实的帮助吧.o(*////▽////*)q. 最近在NTU负责一个国 ...

  9. 巨蟒python全栈开发数据库攻略1:基础攻略

    1.什么是数据库? 2.数据库分类 3.数据库简单介绍 4.安装数据库 5.修改root密码 6.修改字符集 7.sql介绍 8.简单sql操作

随机推荐

  1. iOS开发——UI基础-屏幕适配

    一.适配 1.什么是适配?适应.兼容各种不同的情况 2.移动开发中,适配的常见种类 2.1系统适配 针对不同版本的操作系统进行适配 2.2屏幕适配 针对不同大小的屏幕尺寸进行适配 二.点和像素 1.在 ...

  2. 【第一篇】说说MVC+EF easyui dataGrid 动态加载分页表格

    首先上javascript的代码 <script type="text/javascript"> $(function () { LoadGrid(); }) //加载 ...

  3. console&period;log的一个应用 -----用new方法生成一个img对象和document&period;createElement方法创建一个img对象的区别

    我用两种方法来生成img对象,第一种方法是用new方法,第二种方法是用document.createElement方法. var img1 = new Image(); var img2 = docu ...

  4. 见过NTP服务,没见过网络流量到200M左右的NTP服务

    XXX,看来可能是NTP.CONF的文件配置错误所致了. 附上一段查看网络流量的SHELL.(好像只针对ETH0,如果要看其它的,还需要修改) #!/bin/bash typeset in_old d ...

  5. Jquery AJAX 调用WebService服务

    对Jquery+JSON+WebService的一点认识 文章不错:http://www.cnblogs.com/tyb1222/archive/2011/10/13/2210549.html Jqu ...

  6. 高仿精仿快播应用android源码下载

    今天给大家在网上找到的一款高仿精仿快播应用android源码,分享给大家,希望大家功能喜欢. 说明源码更新中.... 源码即将上传 也可以到这个网站下载:download

  7. vuepress 学习心得

    vuepress是一个静态网站生成器,在我看来就是写博客和教程的好工具.教程请见官网:https://www.vuepress.cn 安装方法建议局部安装:node8.0以上,新建vue项目,可能会出 ...

  8. JS动态添加行列

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Add-Delete Row.a ...

  9. Java 类设计技巧

    摘自<Java核心技术>卷I:基础知识 p140 第4章对象与类 - 类设计技巧 1)一定将数据设计为私有. 最重要的是:绝对不要破坏封装性.有时候,需要编写一个访问器方法或更改器方法,但 ...

  10. Beta周第7次Scrum会议&lpar;11&sol;16&rpar;【王者荣耀交流协会】

    一.小组信息 队名:王者荣耀交流协会 小组成员 队长:高远博 成员:王超,袁玥,任思佳,王磊,王玉玲,冉华 小组照片 二.开会信息 时间:2017/11/16 17:03~17:17,总计14min. ...