预计阅读时间:15分钟

背景:搜索资料时候偶然发现的,很有意思,每一关都覆盖了很多知识点

Python版本:3.0

Talking is cheap,show me the code

主页: http://www.pythonchallenge.com/

热身关: 点击开始挑战,进入热身关卡

http://www.pythonchallenge.com/pc/def/0.html

1.根据提示,输入238.html

2.得到新提示: No... the 38 is a little bit above the 2...

3. 重新观察图片,输入 http://www.pythonchallenge.com/pc/def/274877906944.html

 bogon:~ hbai$ python
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 2**38
274877906944
>>>

4. 恭喜,正式进入第一关

第一关:http://www.pythonchallenge.com/pc/def/map.html

主页提示: What about making trans?  根据翻译规律,#k -> M O->Q E > G 每个字符都后移2位

 #coding=utf-8

 #In py2.7 need following import
#from string import maketrans #page: http://www.pythonchallenge.com/pc/def/map.html
#尝试1: 替换指定的3个字符,发现句子还是看不懂
#k -> M O->Q E > G
str = "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." print(str.replace('k','m').replace('o','q').replace('e','g')) #根据提示,使用transtab翻译
intab = "abcdefghijklmnopqrstuvwxyz"
outtab = "cdefghijklmnopqrstuvwxyzab"
trantab = str.maketrans(intab, outtab) print(str.translate(trantab)) #http://www.pythonchallenge.com/pc/def/map.html
print('http://www.pythonchallenge.com/pc/def/'+ 'map'.translate(trantab) + '.html')

使用maketrans、translate进行翻译,过关

第二关:http://www.pythonchallenge.com/pc/def/ocr.html

根据提示,查看网页源代码

<!--
find rare characters in the mess below:
--> <!--
%%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{_@#_^{*
@##&{#
。。。。
-->

目标:找到出现最少的字符
将字符串copy到本地保存,运行很慢,但是最终得到答案equality
def check_CharFrequence(str):
decode = []
for i in str:
if str.count(i) < 5:
decode.append(i)
print(''.join(decode))
#print sorted(char_freq.items(),key = lambda x: (x[1])) # aeilquty with open('C2_info.txt') as f:
#My method: it's very very not good, because of N^N complex
check_CharFrequence(f.read())
print(f.read())

进一步的思考: 请查看标准答案页面 http://www.pythonchallenge.com/pcc/def/equality.html

第三关:http://www.pythonchallenge.com/pc/def/equality.html

根据提示: One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.

第一次写出正则: #pattern = re.compile('[A-Z]{3}([a-z])[A-Z]{3}',re.S) ,保存源码后运行但是发现还是不对

后来参考答案,发现应该修改如下

#coding=utf-8
import re
#page= http://www.pythonchallenge.com/pc/def/equality.html
#Previous std answer: http://www.pythonchallenge.com/pcc/def/equality.html
#Current page is http://www.pythonchallenge.com/pcc/def/linkedlist.php sampleStr='kAewtloYgcFQaJNhHVGxXDiQmzjfcpYbzxlWrVcqsmUbCunkfxZWDZjUZMiGqhRRiUvGmYmvnJIHEmbT \
MUKLECKdCthezSYBpIElRnZugFAxDRtQPpyeCBgBfaRVvvguRXLvkAdLOeCKxsDUvBBCwdpMMWmuELeG \
ENihrpCLhujoBqPRDPvfzcwadMMMbkmkzCCzoTPfbRlzBqMblmxTxNniNoCufprWXxgHZpldkoLCrHJq \
vYuyJFCZtqXLhWiYzOXeglkzhVJIWmeUySGuFVmLTCyMshQtvZpPwuIbOHNoBauwvuJYCmqznOBgByPw' '''Hint: One small letter, surrounded by EXACTLY three big bodyguards on each of its sides. '''
#My method is NOT correct
#pattern = re.compile('[A-Z]{3}([a-z])[A-Z]{3}',re.S) #Following is CORRECT
pattern = re.compile('[a-z][A-Z]{3}([a-z])[A-Z]{3}[a-z]')
#print pattern.findall(sampleStr) with open('C3_info.txt') as f:
codeList = pattern.findall(f.read())
print(''.join(codeList))

第四关: http://www.pythonchallenge.com/pc/def/linkedlist.php

老规矩,查看源码发现提示如下:

<!-- 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>

尝试打开页面http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345

有意思,需要依次爬到第300层就胜利了

 # coding=utf-8

 # page = http://www.pythonchallenge.com/pc/def/linkedlist.php

 page = 'http://www.pythonchallenge.com/pc/def/linkedlist.php'
loopMainpage = 'http://www.pythonchallenge.com/pc/def/'
firstpage = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=' from urllib import request
import time
import re def looppage(page,num):
response = request.urlopen(page+str(num))
html = response.read()
print(html.decode("utf-8"))
pattern = re.compile('and the next nothing is (\d{1,10}).*?')
target = re.findall(pattern,html.decode("utf-8"))
print(page + target[0])
return target[0] import random
return_num = looppage(firstpage,'')
i = 0
while i < 300:
print('Index %s:' % i)
return_num = looppage(firstpage,return_num)
time.sleep(random.randint(5,10))
i +=1

爬的过程中遇到的坑:

1. 页面有时候就不响应了,因此添加了随机等待时间 (其实应该用匿名代理随机爬最保险,但是那个方法我还没写完。。。)

2. 有一层是提示要当前数字除以二,因此要手工输入一次再继续爬

爬到最后,恭喜你: peak.html

Index 107:
and the next nothing is 52899
http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=52899
Index 108:
and the next nothing is 66831
http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=66831
Index 109:
peak.html
Traceback (most recent call last):
  File "/Users/hbai/PycharmProjects/interview/Py_study/pythonchallenge/C4.py", line 57, in <module>
    return_num = looppage(firstpage,return_num)
  File "/Users/hbai/PycharmProjects/interview/Py_study/pythonchallenge/C4.py", line 32, in looppage
    print(page + target[0])
IndexError: list index out of range

Process finished with exit code 1

第五关:http://www.pythonchallenge.com/pc/def/peak.html

网上提示应该使用pickle库进行操作,试了一下没成功,有空再继续吧

To Be Continued...

[Python][pythonchallenge][TBC]古老的python在线挑战赛,很有意思 (C0-C4)的更多相关文章

  1. python之FTP程序(支持多用户在线)

    转发注明出处:http://www.cnblogs.com/0zcl/p/6259128.html 一.需求 1. 用户加密认证 (完成)2. 允许同时多用户登录 (完成)3. 每个用户有自己的家目录 ...

  2. Python操作Mysql实例代码教程在线版(查询手册)_python

    实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...

  3. 从零开始学Python第0周:Python基本介绍(部分内容来源于网络)

    Python入门介绍 一,Python的基本介绍 (1)概要 Python是一种解释型,面向对象,动态数据类型的高级程序设计语言.常被广泛用于处理系统管理任务和web编程.现如今Python已经成为了 ...

  4. python公司面试题集锦 python面试题大全

    问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...

  5. python学习之路-1 python简介及安装方法

    python简介 一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. 目前最新版本为3.5.1,发布于2015年12月07日 ...

  6. Python学习笔记1-搭建Python环境 和 Python Hello World!

    一.搭建Python开发环境 1.选择开发工具 首先要寻找一个Python的开发工具,Python的开发工具有很多,有pyCharm .Eclipse.Visual studio等等 ,使用最多的还是 ...

  7. python经典书籍推荐:Python核心编程

    作者:熊猫烧香 链接:www.pythonheidong.com/blog/article/27/ 来源:python黑洞网 对<Python核心编程>的褒奖 “ The long-awa ...

  8. Python学习(二)Python 简介

    Python 简介 官方指南及文档 Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr Python3.4官方指南(中文版):http://pan.b ...

  9. 『Python基础-1 』 编程语言Python的基础背景知识

    #『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...

随机推荐

  1. Egret入门学习日记 --- 第三篇 (书中 3.4 内容)

    第三篇 (书中 3.4 内容) 今天还是要把昨天项目运行后,EXML文件里的界面没有出现的问题解决了才行. 去了群里,没人回.去了官网看文档,看不懂. 不过倒是看到了一个好东西: 还挺便宜啊,一个月要 ...

  2. NVIDIA显卡电源不足

    NVIDIA显卡 Ubuntu16.04安装驱动后出现问题:Unable to determine the device handle for GPUXXX 安装NVIDIA驱动后输入:nvidia- ...

  3. Android Studio优化编译速度

    随着Android Studio的不断完善,其安卓开发者阵营也基本从Eclipse转移到了Android Studio,毕竟Android Studio是谷歌亲力亲为开发的官方开发软件.不过其最重要的 ...

  4. 基于Jquery ui 可复用的酒店 web页面选择入住日期插件

    效果图: 代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

  5. weblogic搭建总结

    目录: 一.安装weblogic软件 二.创建域 三.启动管理节点 四.创建被管理节点 五.部署应用 一.安装weblogic软件 一.关闭selinux和防火墙 service iptables s ...

  6. Flink SQL项目实录

    一.Flink SQL层级 为Flink最高层的API,易于使用,所以应用更加广泛,eg. ETL.统计分析.实时报表.实时风控等. Flink SQL所处的层级: 二.Flink聚合: 1.Wind ...

  7. 《ucore lab1 exercise1》实验报告

    资源 ucore在线实验指导书 我的ucore实验代码 题目:理解通过make生成执行文件的过程 列出本实验各练习中对应的OS原理的知识点,并说明本实验中的实现部分如何对应和体现了原理中的基本概念和关 ...

  8. google搜索设置,在新的窗口打开

  9. Vue.js与React的全面对比

    Vue与React的对比 Vue.js与React.js从某些反面来说很相似,通过两个框架的学习,有时候对一些用法会有一点思考,为加深学习的思索,特翻阅了两个文档,从以下各方面进行了对比,加深了对这两 ...

  10. 【转】利用匿名namespace解决C++中重复定义的问题

    目录 利用匿名namespace解决C++中重复定义的问题 原文:https://blog.csdn.net/pi9nc/article/details/11267031 利用匿名namespace解 ...