国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

通過游戲闖關來測試自己的python掌握能力

來源:懂視網 責編:小采 時間:2020-11-27 14:09:28
文檔

通過游戲闖關來測試自己的python掌握能力

通過游戲闖關來測試自己的python掌握能力:最近在網上看到一個非常有意思的 Python 游戲通關網站,一共有 33 關,每一關都需要利用 Python 知識解題找到答案,然后進入下一關。很考驗對 Python 的綜合掌握能力,比如有的闖關需要用到正則表達式,有的要用到爬蟲。我們平常學 Python 都是按章節
推薦度:
導讀通過游戲闖關來測試自己的python掌握能力:最近在網上看到一個非常有意思的 Python 游戲通關網站,一共有 33 關,每一關都需要利用 Python 知識解題找到答案,然后進入下一關。很考驗對 Python 的綜合掌握能力,比如有的闖關需要用到正則表達式,有的要用到爬蟲。我們平常學 Python 都是按章節
最近在網上看到一個非常有意思的 Python 游戲通關網站,一共有 33 關,每一關都需要利用 Python 知識解題找到答案,然后進入下一關。很考驗對 Python 的綜合掌握能力,比如有的闖關需要用到正則表達式,有的要用到爬蟲。

PYTHON1.jpg

我們平常學 Python 都是按章節順序、包或者模塊來學,容易前學后忘。正好可以拿這個網站來綜合測試一下對 Python 的掌握情況,以便查缺補漏。

來說說這個網站怎么玩。

微信圖片_1.jpg

這是網站主頁面,很有歷史感對吧,誕生了已有十幾年了。但千萬不要因為看著像老古董而小瞧它。

微信圖片_2.jpg

我們來玩玩看,點擊「get challenged」開始挑戰。

第 0 關是 Warming up 熱身環節:

這一關要求是修改 URL 鏈接,給的提示是電腦上的數學表達式:2 的 38 次方,所以大概就是需要計算出數值,然后修改url 進入下一關。

所以這關就是考 Python 的基本數值運算,你知道怎么算么?

打開 Python 自帶終端,一行代碼就能計算出結果:

微信圖片_3.png

把原鏈接中的 0替換為 274877906944回車就會進入下一關:

微信圖片_4.jpg

游戲這就正式開始了。圖片中的筆記本給了三組字母,很容易發現規律:前面的字母往后移動兩位就是后面的字母。

那么需要做的就是根據這個規律把下面的提示字符串,做位移解密得到真正的句子含義:

這道題考察字符串編碼和 for 循環相關知識,代碼實現如下:

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.'''
text_translate = ''
for i in text:
 if str.isalpha(i):
 n = ord(i)
 if i >= 'y':
 n = ord(i) + 2 - 26
 else:
 n = ord(i) + 2
 text_translate += chr(n)
 else:
 text_translate += i
print(text_translate)

得到結果:

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() 這個方法解決,我們上面采取的是比較直接的方法,官方給出了更為精簡的方法:

import string
l = string.lowercase
t = string.maketrans(l, l[2:] + l[:2])
print (text.translate(t))

然后把 url 中的 map 改為ocr回車就來到了第 2 關:

微信圖片_5.jpg

作者接著說過微信圖片_5.jpg關的提示可能在書里(當然不可能了)也可能在網頁源代碼里。那就右鍵查看源代碼往下拉看到綠色區域,果然找到了問題:

微信圖片_6.png

意思就是:要在下面這一大串字符里找到出現次數最少的幾個字符

考察了這么幾個知識點:

正則表達式提取字符串

list 計數

條件語句

如果是你,你會怎么做?

來看下,十行代碼快速實現:

import requests
url = 'http://www.pythonchallenge.com/pc/def/ocr.html'
res = requests.get(url).text
text = re.findall('.*?<!--.*-->.*<!--(.*)-->',res,re.S)
# list轉為str便于遍歷字符
str = ''.join(text)
lst = []
key=[]
#遍歷字符
for i in str:
 #將字符存到list中
 lst.append(i)
 #如果字符是唯一的,則添加進key
 if i not in key:
 key.append(i)
# 將list列表中的字符出現字數統計出來
for items in key:
 print(items,lst.count(items))

首先,用 Requests 請求網頁然后用正則提取出字符串,接著 for 循環計算每個字符出現的次數。

% 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 字符就闖過過了第 2 關進入下一關繼續挑戰。是不是有點意思?

后面每一關都需要用到相關的 Python 技巧解決,比如第 4 關:

微信圖片_7.jpg

這一關作者弄了個小惡作劇,需要手動輸入數值到 url 中然后回車,你以為這樣就完了么?并沒有它有會不斷重復彈出新的數值讓你輸入,貌似無窮盡。

微信圖片_8.gif

所以,這一關肯定不能采取手動輸入的方法闖關,自然要用到 Python 了。要實現自動填充修改 url 回車跳轉到新 url,循環直到網頁再也無法跳轉為止這一功能。

如果是你,你會怎么做?

其實,一段簡單的爬蟲加正則就能搞定。思路很簡單,把每次網頁中的數值提取出來替換成新的 url 再請求網頁,循環下去,代碼實現如下:

import requests
import re
import os
# 首頁url
resp = requests.get(
 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345').text
 url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='
# 計數器
count = 0
while True:
 try:
 # 提取下一頁動態數值
 nextid = re.search('d+', resp).group()
 count = count + 1
 nextid = int(nextid)
 except:
 print('最后一個url為:%s' % nexturl)
 break
 # 獲取下一頁url
 nexturl = url + str(nextid)
 print('url %s:%s' % (count, nexturl))
 # 重復請求
 resp = requests.get(nexturl).text

輸出結果如下:

微信圖片_20190603173422.gif

可以看到,最終循環了 85 次找到了最后一個數字16044,輸入到 url 中就闖關成功。

如果遇到不會做的題,可以在這里找到參考答案:

中參考文教程:

https://www.cnblogs.com/jimnox/archive/2009/12/08/tips-to-python-challenge.html

官方參考教程:

http://garethrees.org/2007/05/07/python-challenge/

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

通過游戲闖關來測試自己的python掌握能力

通過游戲闖關來測試自己的python掌握能力:最近在網上看到一個非常有意思的 Python 游戲通關網站,一共有 33 關,每一關都需要利用 Python 知識解題找到答案,然后進入下一關。很考驗對 Python 的綜合掌握能力,比如有的闖關需要用到正則表達式,有的要用到爬蟲。我們平常學 Python 都是按章節
推薦度:
標簽: 游戲 技能 能力
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 日韩欧美色 | 精品国产一区二区三区不卡蜜臂 | 欧美日韩亚洲一区二区三区 | 国产日韩高清一区二区三区 | 国产精品一区二区av | 91在线视频一区 | 亚洲欧美经典 | 国产精品ⅴ视频免费观看 | 久久精品最新免费国产成人 | 日韩免费高清视频网站 | 久久久久久久国产精品毛片 | 国产麻豆a一级毛片爽爽影院 | 99久久精品国产一区二区成人 | 中文国产成人精品少久久 | 亚洲 欧美 日韩 综合 | 久久一级毛片 | 国产精品成人第一区 | 欧美成人精品欧美一级乱黄 | 欧美亚洲三级 | 国产精选在线 | 国产一区二区三区 韩国女主播 | 国产精品hd免费观看 | 国产精品色综合久久 | 五月婷婷丁香 | 国产一在线 | 亚洲激情另类 | 国产精品久久久久久久9999 | 不卡在线一区 | 中文字幕美日韩在线高清 | 国产成人免费视频精品一区二区 | 亚洲三级电影网 | 亚洲 欧美 91 | 久久福利免费视频 | 波多野结衣乳巨码无在线观看 | 亚欧美色| 亚洲综合日韩在线亚洲欧美专区 | 欧洲人交xxx69 | 精品免费国产一区二区女 | 欧美日韩亚洲无线码在线观看 | 久久伊| 国产 日韩 欧美视频二区 |