有趣的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中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧