有趣的Python Challenge编程游戏闯关攻略一(0-4关)

2024-02-15 09:20

本文主要是介绍有趣的Python Challenge编程游戏闯关攻略一(0-4关),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

**有趣的Python Challenge编程游戏闯关攻略一(0-4关)**

  • 介绍
  • 关卡
    • 第0关
    • 第1关
    • 第2关
    • 第3关
    • 第4关
  • 链接总结

介绍

平时自己学python,大家肯定很是无聊,推荐一个很早之前的网页版python闯关游戏——Python Challenge,虽然说这个网站很早了,但是很有意思,你会发现这些游戏一点也不简单,基本都需要通过编程来解决……

有意思的是,这是个解谜游戏,所以需要你细心去发现线索,破解谜底,并且考察的知识量也不是很小,很有意思。

游戏链接:http://www.pythonchallenge.com/

界面是这样的:
在这里插入图片描述
点击Click here to get challenged开始挑战。

关卡

第0关

链接:http://www.pythonchallenge.com/pc/def/0.html
在这里插入图片描述
可以看见左上角显示第0关,下面提示 try to change the URL address,让我们改变url地址,这是很重要的,因为后面的关卡都将通过这样的方式进入下一关。屏幕中间显示2^38,猜测需要用计算结果来改变url,于是编程:

2**38

很简单就能得到结果是274877906944,替换掉原来url中的0得到新的url:

http://www.pythonchallenge.com/pc/def/274877906944.html

第1关

在这里插入图片描述
可以看见下面有一行看不懂的字母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.,上面图片有字母提示。

当前的url为http://www.pythonchallenge.com/pc/def/map.html 其实这时候我们可以大胆猜测是把map替换掉,替换的规则就是把每个字母向后推两位。

我们编程来翻译下面的文字:

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.'''
for i in range(len(s)):if ord(s[i])>=ord('a') and ord(s[i])<=ord('x'):c=chr(ord(s[i])+2)print(c,end='')elif ord(s[i])>=ord('y') and ord(s[i])<=ord('z'):c=chr(ord(s[i])-24)print(c,end='')else:print(s[i],end='')

输出结果为:

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()来进行计算,但事实上我们几乎已经可以肯定谜底了,显然就是把map替换为ocr即可,于是结果为:

http://www.pythonchallenge.com/pc/def/ocr.html

第2关

在这里插入图片描述
可以看见提示我们查看网页源代码,右键查看源代码(后面的关卡经常用到),我们发现有一段注释<!-- find rare characters in the mess below:(在下面杂乱的字符中找出稀有字符) -->
下面有一段非常长的字符,目测大概有一两万,大概像这样:
在这里插入图片描述
什么是稀有字符呢?估计就是出现次数少的吧,我们编程处理:

from collections import Counter
strings='''长长的字符'''
c = Counter(strings)
print(c.most_common())

结果是这样,可以看见有一些字母出现了一次,

[(')', 6186), ('@', 6157), ('(', 6154), (']', 6152), ('#', 6115), ('_', 6112), ('[', 6108), ('}', 6105), ('%', 6104), ('!', 6079), ('+', 6066), ('$', 6046), ('{', 6046), ('&', 6043), ('*', 6034), ('^', 6030), ('\n', 1219), ('e', 1), ('q', 1), ('u', 1), ('a', 1), ('l', 1), ('i', 1), ('t', 1), ('y', 1)]

打印出来

from collections import Counter
strings='''长长的字符'''
c = Counter(strings)
print(c.most_common())
print(''.join([i[0] for i in c.items() if i[1]==1]))

结果是:equality
于是得到新的url:

http://www.pythonchallenge.com/pc/def/equality.html

第3关

在这里插入图片描述
可以看见下面的提示One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.
就是说找小写字母,这个小写字母的两边必须是3个大写字母,但是没有说去哪里找??

根据经验,我们右键查看网页源代码:
在这里插入图片描述
同样我们可以看见有一段注释,长度吓人。。。。。
此时我们注意到网页titlere,所以我们使用正则表达式来查找:
(解释一下,因为两边的大写字母只能是三个,所以我们在两边添加[a-z]

import re
strings='''长长的字符串'''
reg=re.compile('[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]')
print(' '.join(reg.findall(dat)))

结果是这样:

qIQNlQSLi eOEKiVEYj aZADnMCZq bZUTkLYNg uCNDeHSBj kOIXdKBFh dXJVlGZVm gZAGiLQZx vCJAsACFl qKWGtIDCj

中间的小写字母就是我们要找的,修改代码:

result=reg.findall(dat) 
url='' 
for res in result: url+=res[4] 
print(url)

打印的结果是:linkedlist,得到新的url:
http://www.pythonchallenge.com/pc/def/linkedlist.html

打开以后,页面只有一句 linkedlist.php,我们再次替换url:

得到:http://www.pythonchallenge.com/pc/def/linkedlist.php 这才是最终结果。

第4关

在这里插入图片描述
只有一张图片。。。于是我点击图片看到一句话and the next nothing is 44827
???????????what???这是啥意思?????
别急,还是查看源代码


<html>
<head><title>follow the chain</title><link rel="stylesheet" type="text/css" href="../style.css">
</head>
<body>
<!-- urllib may help. DON'T TRY ALL NOTHINGS, since it will never 
end. 400 times is more than enough. -->
<center>
<a href="linkedlist.php?nothing=12345"><img src="chainsaw.jpg" border="0"/></a>
<br><br><font color="gold"></center>
Solutions to previous levels: <a href="http://wiki.pythonchallenge.com/"/>Python Challenge wiki</a>.
<br><br>
IRC: irc.freenode.net #pythonchallenge
</body>
</html>

我们可以看见,下面这两行文字,它给我们提供了一个库urllib,然后告诉我们不要尝试所有的nothing,因为它是无限的,400次循环足够了……

<!-- urllib may help. DON'T TRY ALL NOTHINGS, since it will never 
end. 400 times is more than enough. -->

这时,我么们也许会想,nothing是啥????别忘了我们点击图片以后的url是http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345

以及出现的文字是and the next nothing is 44827
这就很明了了,爬虫的用处出来了,提示我们使用urllib库,但是我用requests照样解决问题
(其实为了严谨起见,使用正则表达式查找nothing的值更为精确吧,不过数据不多,我们这样也很简单找出来)

import requests
url='http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345'
for i in range(400):url='http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='+txt.split()[-1]r=requests.get(url)txt=r.textprint(txt)

虽然每一次都打印出来结果很浪费,但是不要省略,因为也许有些页面不一样呢??并且打印出来的时候,我们就可以停止程序的运行,因为这个循环很费时间。我开始就是当循环第400次的时候打印结果,但是没有收获,我尝试了400前后的几次都不行,于是我打印了出来,大约是250左右的某一次打印了出来,结果是这样。

and the next nothing is 41643
and the next nothing is 23416
and the next nothing is 54432
and the next nothing is 4448
……………………这里省略很多行
peak.html
and the next nothing is 72758
and the next nothing is 71301

这样我们就得到了新的url

http://www.pythonchallenge.com/pc/def/peak.html

好了,这就是前五个关卡,,第五关很奇葩,明天再写吧…………

链接总结

游戏链接:     http://www.pythonchallenge.com/0关开始链接:http://www.pythonchallenge.com/pc/def/0.html
谜底:      0:http://www.pythonchallenge.com/pc/def/274877906944.html1:http://www.pythonchallenge.com/pc/def/ocr.html2:http://www.pythonchallenge.com/pc/def/equality.html3:http://www.pythonchallenge.com/pc/def/linkedlist.php4:http://www.pythonchallenge.com/pc/def/peak.html

这篇关于有趣的Python Challenge编程游戏闯关攻略一(0-4关)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/710990

相关文章

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取