作者 | 周萝卜

来源 | 萝卜大杂烩

这是一个学习 Python 的趣味网站,通过关卡的形式来锻炼 Python 水平。一共有 33 关,每一关都需要利用 Python 知识解题找到答案,然后进入下一关。很考验对 Python 的综合掌握能力,比如有的闯关需要用到正则表达式,有的要用到爬虫

一般情况下,我们学习 Python 都是按照章节顺序,比如从基本语法、基本数据类型、条件语句、循环语句、函数,面向对象等等来进行的,如果学习时间跨度过大,那么就很容易忘记前面的所学。此时正好可以拿这个网站来综合测试一下对 Python 的掌握情况,以便查缺补漏

下面我们来就来说一下这个网站怎么玩

可以看到进入网站主页面,映入眼帘的就是一个很有年代感的画面,看来是一个年代比较久远的网站了,但是可千万不要因为网站建立的时间长就小瞧它哦!

接下来我们点击get challenged开始挑战

第0关,古香古色,哈哈哈,是让我们根据2的38次方来更改 url,这应该就算是热身运动吧,我们直接通过 Python 计算一下即可

把计算的结果替换 url 中的0就可以进入到下一关了

接下来就是正式的关卡了,我们的游戏也正式开始!

根据图片中的字母以及下方的提示,我们可以得出:前面的字母往后移动两位就是后面的字母

然后根据这个规律,重新计算最下方的一串字符

这里考察了 Python 当中字符串编码的相关知识

text = '''g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpqypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'qufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq()gq pcamkkclbcb. lmu ynnjw ml rfc spj.'''def trans(text):new_text = ''for i in text:if str.isalpha(i):n = ord(i)if i >= 'y':n = ord(i) + 2 - 26else:n = ord(i) + 2new_text += chr(n)else:new_text += iprint(new_text)trans(text)

Output:

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”就可以拿到新的 url 了

trans("map")

Output:

ocr

此时我们把 url 中的 map 替换为 ocr 就可以进入下一关

提示说可能在书里,哈哈哈,这是要看瞎的节奏,也可能在网页源代码里。我们通过右键查看源代码往下拉看到绿色区域

看到一行提示:find rare characters in the mess below

意思就是要在下面这一大串字符里找到出现次数最少的几个字符

我们先使用 request 请求网页,然后通过正则表达式来获取字符

import requests
def get_challenge(s):return requests.get('http://www.pythonchallenge.com/pc/' + s).texttext = get_challenge('def/ocr.html')
str = ''.join(text)
import re
text = re.compile('<!--((?:[^-]+|-[^-]|--[^>])*)-->', re.S).findall(str)[-1]
counts = {}
for c in text: counts[c] = counts.get(c, 0) + 1
print(counts)

Output:

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

可以看到出现次数最少的就是最后几个字符,合起来是「equality」,替换 url 字符 ocr 就可以进入下一关了

好了,是不是挺有意思的,我们就不再继续剧透了,感兴趣的小伙伴可以自行探索,对于巩固 Python 基础知识还是非常有帮助的!

网站地址:http://www.pythonchallenge.com/

官方参考:https://garethrees.org/2007/05/07/python-challenge/

技术

100行python代码制作鞭炮

资讯

算力超越iPhone,芯片堪比Mac

技术

31个好用的Python字符串方法

资讯

游戏圈地震级消息,微软收购动视暴雪

分享

点收藏

点点赞

点在看

介绍一个打怪升级练习 Python 的网站,寓教于乐~相关推荐

  1. 利用 Proxy 代理与 Reflect 反射实现 mv 模型视图,实现一个 打怪升级 的小游戏“勇士之战”

    利用 Proxy 代理与 Reflect 反射实现 mv 模型视图,多层数据动态渲染页面,模仿 vue3 双向绑定中 viewModel 核心功能,实现一个 打怪升级 的小游戏"勇士之战&q ...

  2. CodeWar打怪升级-Python篇

    CodeWar打怪升级-Python篇 1.  The goal of this exercise is to convert a string to a new string where each ...

  3. python做一个打怪升级的游戏

    可以使用 Python 开发一个类似 "打怪升级" 的游戏,可以使用 Python 的基本语法和面向对象编程思想来实现. 首先,需要定义一个角色类,包含角色的属性(如生命值,攻击力 ...

  4. 你还为没有数据测试而发愁吗?介绍一个专业Fake的python库,什么个人信息、IP、UserAgent统统搞定

    小编经常需要批量测试一些数据,有时候测试环境又暂时没数据,特意找了一下,发现有一个可批量生成数据的python库----faker,现在就介绍一下它的使用方法,如果你不想一行一行输入代码,那小编页提供 ...

  5. 小白一路打怪升级学习Python,他的征途是星辰大海

    很多人会问:老师,我们零基础入门python编程,我们要怎么学才能跟那些有经验的编程大佬PK,才能在毕业的时候高薪就业?这是一个比较典型的.很多人都会关注的问题,今天小编就来给大家分享一下怎么学习py ...

  6. 简单回合制打怪升级游戏(Python实现)

    文字对战 主要的系统分类: 角色系统:种族系统和技能系统 战斗系统:采用回合制 商城系统:游戏的道具贩卖系统 充值系统:充值 各系统功能细化: 角色系统--种族系统 分为2大种类:法师和战士 法师系: ...

  7. 给Angular初学者介绍一个非常方便的例子学习网站

    网址:https://angular.io/generated/live-examples/getting-started-v0/stackblitz.html 这个网站打开后,是一个已经开发好的An ...

  8. dsc linux 软件安装_介绍一个linux各软件安装教程网站linuxize

    前言 相信有很多开发者安装linux系统软件时都会根据不同的发行版本去百度不同软件的安装步骤,但有时候可能会出现读者根据博主的安装步骤进行却出现了无法安装成功的情况,其实我作为一名读者有时也会出现这样 ...

  9. 找到一个不错的学习python的网站

    对于0基础的童鞋来说还是很友好的 开发工具:sublime text3 ,轻便小巧好用,直接去官网下载就行 装载一些python常用插件就可以开始练习了 学习地址: https://www.liaox ...

最新文章

  1. Drools 规则语言详解(上)
  2. 666A-Reberland Linguistics(动态规划)
  3. 走进PV,UV,IP,session
  4. Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7:
  5. 分布式存储---moosefs部署
  6. 20189222 《网络攻防实践》安全工具、库的简介以及使用教程
  7. FPGA——HLS编程入门
  8. 软件设计与体系结构实验——图书馆管理系统
  9. 路由器ipv4和ipv6转发原理
  10. 注解(Annotation)那点事
  11. POJ1753 Flip Game
  12. 英国内政大臣表示社交软件加密不能太严
  13. 用vue写轮子的一些心得(五)——Slides轮播组件
  14. python数据可视化(一)
  15. 学业竞技实业网址窗口
  16. LAMP - 学习/实践
  17. 江湖中常说的“网格交易法”到底是什么?
  18. AD18无法仿真问题的解决
  19. 利用高德地图API批量获取地点经纬度和行车线路与OD距离(excel和python)
  20. 数字IC手撕代码-流水握手(利用握手解决流水线断流、反压问题)

热门文章

  1. 20.Valid Parentheses (python)
  2. 在jupyter notebook中同时安装python2和python3
  3. Scala和范畴论 -- 对Monad的一点认识
  4. Learn Jenkins the hard way (0) - Jenkins的罪与罚
  5. 2015_8_21作业——有自翻译有复制他人的英语太差
  6. JDBC实例--工具类升级,使用Apache DBCP连接池重构DBUtility,让连接数据库更有效,更安全...
  7. Linq 集合处理(Union)
  8. 思科生成树命令之debug spanning-tree(本文转载自:www.91ccie.coml
  9. Windows Phone 7、XNA的旋转的背景
  10. Java矩阵计算之EJML