今天發現乙個練習python的**,
感覺挺有意思的
連著看了3關,這個**中每個挑戰的結題思路很好玩, 用來練習python是再好不過了
總體上來說, 解密思路可以網上找一找,但是用實現解密的程式**自己先寫一寫,然後再看看網上的大牛們,學習學習他們的思路
順便推薦乙個練習爬蟲的**: 黑板客
本文以後就是每乙個關卡的彙總點了。
第一關入口:pc/def/0.html
#coding:utf-8
import urllib2
import htmlparser
import re
from string import maketrans,translate,lowercase,punctuation
def get_html_pages(url):
try:
headers =
#構建請求的request
request=urllib2.request(url,headers=headers)
#利用urlopen獲取頁面**
response=urllib2.urlopen(request)
#將頁面轉化為utf-8編碼格式
html=response.read().decode('utf-8')
html=htmlparser.htmlparser().unescape(html)#處理網頁內容, 可以將一些html型別的符號如" 轉換回雙引號
return html
#捕捉異常,防止程式直接死掉
except urllib2.urlerror,e:
print u"連線失敗,錯誤原因",e.reason
print u"連線失敗,錯誤原因:%s " % e.code
return none
#切割**,得到要被替換的字元,最後乙個斜線到小數點之間的內容
def get_replace_str_and_get_next_level_url(url,replace_str):
be_replace_str = url.split('/')[-1].split('.')[0]
return url.replace(be_replace_str,replace_str)
class pythonchallege:
def level0(self):
url_level_0='pc/def/0.html'#第0關的**
next_level_tips=str(2**38)#提示資訊
be_replace_str=url_level_0.split('/')[-1].split('.')[0]#要被替換的內容
print be_replace_str+" will be replace"
print 'next level url is :'+next_level_url
if urllib2.urlopen(next_level_url).code == 200:
print 'get right url'
def level1(self):
#字元轉換函式
def translate_string(trans_string):
test_string='cdefghijklmnopqrstuvwxyzab'
test_string1='abcdefghijklmnopqrstuvwxyz'
test_table={}
#將乙個list轉換為字典的方法,字典格式為
for i in test_string1:
test_table[i]=test_string1.index(i)
tmp_final_string=''
for a in trans_string:
if a in test_string1:
tmp_final_string +=test_string[test_table[a]]
else:
tmp_final_string+=a
print u'翻譯轉換出來的語句是:'+tmp_final_string
return tmp_final_string
leve1_url='pc/def/map.html'
html=get_html_pages(leve1_url)#獲取網頁內容
target_string_pattern=re.compile('(.*?)',re.s)#定義匹配字串規則
target_string=re.search(target_string_pattern,html).group(1).strip()#得到網頁上的那一行字串
print u'網頁上提示的字串序列是:'+target_string
translate_string(target_string)
next_level_translate_str=leve1_url.split('/')[-1].split('.')[0]
print get_replace_str_and_get_next_level_url(leve1_url,translate_string(next_level_translate_str))
def level2(self):
leve2_url='pc/def/ocr.html'
html=get_html_pages(leve2_url)
tips_string_pattern=re.compile('.*?.*?',re.s)#定義匹配規則,獲取網頁中注釋的內容
tips_string=re.search(tips_string_pattern,html).group(1).strip()
next_level_string=''
#找到字串中的小寫字母
for i in tips_string:
if i in lowercase:
next_level_string +=i
print next_level_string
def level3(self):
level3_url='pc/def/equality.html'
html=get_html_pages(level3_url)#獲取網頁內容
tips_string_pattern=re.compile('',re.s)#定義匹配規則,獲取網頁中注釋的內容
tips_string=re.search(tips_string_pattern,html).group(1).strip()
#匹配規則, 乙個小寫字母兩邊有且都有3個大寫字母
find_pattern=re.compile(r'[^a-z][a-z]([a-z])[a-z][^a-z]')
print ''.join(re.findall(find_pattern,tips_string))
mychallenge=pythonchallege()
mychallenge.level3()
Python挑戰遊戲彙總
今天發現乙個練習python的 感覺挺有意思的 連著看了3關,這個 中每個挑戰的結題思路很好玩,用來練習python是再好不過了 總體上來說,解密思路可以網上找一找,但是用實現解密的程式 自己先寫一寫,然後再看看網上的大牛們,學習學習他們的思路 順便推薦乙個練習爬蟲的 黑板客 本文以後就是每乙個關卡...
Python 簡易挑戰10秒小遊戲
from tkinter import from tkinter.messagebox import import time import random root tk rans 0.1 0.08 0.06 0.04 count 0start false deften 遊戲主題函式 global s...
博弈遊戲彙總
1 巴什博弈 一堆石子,有n個,兩個人輪流取,每次至少取1個,至多取m個,拿走最後乙個石子的人獲勝 假設一堆石子有 n m 1 由於一次只能取m個,無論先手取多少個,後手總能拿走剩餘的,這時一定是先手負 於是找到取勝規則 一對石子 n m 1 r s 對於先手應該先取走s個,設後手取走k個,先手再取...