有趣的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

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip