介绍一个打怪升级练习Python的网站,寓教于乐了属于是!

简介: 介绍一个打怪升级练习Python的网站,寓教于乐了属于是!

这是一个学习 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 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.'''
def trans(text):
    new_text = ''
    for i in text:
        if str.isalpha(i):
            n = ord(i)
            if i >= 'y':
                n = ord(i) + 2 - 26
            else:
                n = ord(i) + 2
                new_text += chr(n)
        else:
            new_text += i
    print(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).text
text = 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/

好了,这就是今天分享的全部内容,喜欢就点个+在看吧~

相关文章
|
2月前
|
数据采集 开发者 Python
Python之怎么爬取图片网站
Python之怎么爬取图片网站
|
2月前
|
Web App开发 存储 安全
Python编写脚本,打开浏览器输入网址,自动化登陆网站
Python编写脚本,打开浏览器输入网址,自动化登陆网站
76 4
|
1月前
|
Python
基于python-django的matlab护照识别网站系统
基于python-django的matlab护照识别网站系统
15 0
|
1月前
|
安全 Java Python
基于python-django的Java网站全站漏洞检测系统
基于python-django的Java网站全站漏洞检测系统
33 0
|
2月前
|
存储 安全 数据安全/隐私保护
安全升级!Python AES加密实战,为你的代码加上一层神秘保护罩
【9月更文挑战第12天】在软件开发中,数据安全至关重要。本文将深入探讨如何使用Python中的AES加密技术保护代码免受非法访问和篡改。AES(高级加密标准)因其高效性和灵活性,已成为全球最广泛使用的对称加密算法之一。通过实战演练,我们将展示如何利用pycryptodome库实现AES加密,包括生成密钥、初始化向量(IV)、加密和解密文本数据等步骤。此外,还将介绍密钥管理和IV随机性等安全注意事项。通过本文的学习,你将掌握使用AES加密保护敏感数据的方法,为代码增添坚实的安全屏障。
133 8
|
2月前
|
JSON 安全 数据库
Python安全性大升级:OAuth与JWT,让你的应用穿上防弹衣🛡️
【9月更文挑战第6天】在数字世界中,每个应用都面临着安全威胁。作为Python开发者,构建强大的系统至关重要。OAuth和JWT为我们提供了坚实的安全保障。OAuth作为一种授权机制,让用户无需向第三方应用暴露敏感信息;JWT则通过自包含的信息传输,增强了安全性并提高了系统性能。利用Python生态中的这些工具,我们可以更好地保护用户数据,守护他们的信任与期待。下面是一个使用PyJWT生成和验证JWT的示例代码:(示例代码同上)通过这些技术,我们的应用能够更加稳健地在数字海洋中航行。
31 3
|
2月前
|
Python
python pip升级3-3
python pip升级3-3
|
3月前
|
开发框架 Java 数据管理
我使用Python开发网站的3个主要框架库,强烈推荐
我使用Python开发网站的3个主要框架库,强烈推荐
|
3月前
|
Linux Python
Linux 升级安装 Python 3
Linux 升级安装 Python 3
74 2
|
3月前
|
JavaScript Java 开发者
Python: 从 2.7 升级到 3,我比 vue 慢了一点点
Python: 从 2.7 升级到 3,我比 vue 慢了一点点