Python Challenge 6

第6关:

  既然下面的与riddle没有关系,那就不要管了啦,想哥什么时候有钱了再汇给你呗。现在还只是工科屌丝一枚。

  看上面,除了一个注释<!--zip-->就没了,拉进url一试,yes, find the zip.

  压缩文件,再拉一个channel.zip就弄出来了。

  剩下的与第5关类似。 the next nothing is ...

import urllib
import urllib.request
import zipfile
import os
import os.path
import re

def un_zip(file_name):
    document_name = file_name.replace(‘.zip‘, ‘‘)
    if not os.path.isdir(document_name):
        os.mkdir(document_name)
    with zipfile.ZipFile(file_name) as Zip:
        for name in Zip.namelist():
            Zip.extract(name, document_name)

# 接收文件
urllib.request.urlretrieve(‘http://www.pythonchallenge.com/pc/def/channel.zip‘, r‘.\channel.zip‘)

# 解压文件
un_zip(‘channel.zip‘)

# 查找起点文件
with open(‘channel\\readme.txt‘, ‘r‘) as f:
    nowfile = re.findall(‘\d+‘, f.read())[1]

Zip = zipfile.ZipFile(‘channel.zip‘)
comments = []
# 查找结束文件
while 1:
    try:
        with open(‘channel\\‘+nowfile+‘.txt‘) as f:
            comments.append(Zip.getinfo(nowfile + ‘.txt‘).comment.decode())
            content = f.read()
            if not re.match(‘Next nothing is ‘, content):
                print(content, nowfile)
            nowfile = re.search(‘\d+‘, content).group()
    except:
        break

print(‘‘.join(comments))

‘‘‘ Collect the comments. ‘‘‘
‘‘‘
****************************************************************
****************************************************************
**                                                            **
**   OO    OO    XX      YYYY    GG    GG  EEEEEE NN      NN  **
**   OO    OO  XXXXXX   YYYYYY   GG   GG   EEEEEE  NN    NN   **
**   OO    OO XXX  XXX YYY   YY  GG GG     EE       NN  NN    **
**   OOOOOOOO XX    XX YY        GGG       EEEEE     NNNN     **
**   OOOOOOOO XX    XX YY        GGG       EEEEE      NN      **
**   OO    OO XXX  XXX YYY   YY  GG GG     EE         NN      **
**   OO    OO  XXXXXX   YYYYYY   GG   GG   EEEEEE     NN      **
**   OO    OO    XX      YYYY    GG    GG  EEEEEE     NN      **
**                                                            **
****************************************************************
 **************************************************************
‘‘‘

  好吧,其实远没有这么简单,这题的技术含量可能是之前所有中最高的了。当然可能我是想写一个一步直接完成的程序。

  找到最后一个文件,‘collect the comments‘,这我确实不懂,查了才知道压缩文件每次打开,右边的注释就是这个所指的注释,利用getinfo()获得

  接着就是类似前面的图片数字将其组合起来。获得最后一张图。

  hockey应该就是最后答案了,但是事实上打开后,

  ‘it‘s in the air. look at the letters.‘

  又不得其解,总是在关键时刻掉链子。最后才发现那些HOCKEY大字母中组成的小写字母才是最终答案 oxygen。

学习函数:

  urlretrieve(url, filename): 从给定url获取文件或者直接html接收文件到filename中,其中filename是路径+文件名

  ZipFile(name): 打开zip压缩文件,之后用extract解压文件

  getinfo(name): name为压缩文件中的相应文件,获取相应的注释

  ‘‘.join(list): 发现python challenge中经常使用到,用来连接字符串

第7关卡壳啦。

时间: 2024-08-08 22:07:46

Python Challenge 6的相关文章

Python Challenge——T2

想起来之前在学校论坛上看到大神推荐的一款python游戏 Python Challenge,于是做了几道题,还很有意思. 这是第二题,先放链接:http://www.pythonchallenge.com/pc/def/map.html 题目如下: 还有两段文字提示: everybody thinks twice before solving this. g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bm

一个古老的编程游戏:Python Challenge全通攻略(转)

Python Challenge是一个网页闯关游戏,通过一些提示找出下一关的网页地址.与众不同的是,它是专门为程序员设计的,因为大多数关卡都要编程来算哦!! 去年和同学一起玩的,他做了大半,我做了小半,作弊了一些,33关全通,今天逛硬盘发现这个资料,拿出来晃晃. 非常非常非常非常好玩,强烈推荐编程的朋友都玩玩,不一定要会Python,我和我同学都不会,不过我们用C#一样能搞出来,没有障碍的. 0 http://www.pythonchallenge.com/pc/def/0.html 猜238,

Python Challenge 过关心得(0)

最近开始用Openerp进行开发,在python语言本身上并没有什么太大的进展,于是决定利用空闲时间做一点python练习. 最终找到了这款叫做Python Challenge(http://www.pythonchallenge.com)的编程游戏. 这款游戏年代十分久远了,不过据说题目难度到后面挺大,我很怀疑会在某些关卡卡上很长一段时间,反正就尝试着做做看吧,能做多少做多少,现在水平低就做前面的简单的,等水平上去了再慢慢挑战后面的关卡. 最开始的其实是第0关,图片上是一个数字238,下方提示

python challenge趣味挑战赛

第0关 http://www.pythonchallenge.com/pc/def/0.html >>>print 2 ** 38 274877906944L 替换网址为http://www.pythonchallenge.com/pc/def/274877906944.html 第1关 http://www.pythonchallenge.com/pc/def/map.html 是个密码,字母往后移动两位,yz 变为 ab #!/usr/bin/env python # coding:

Python challenge 3 - urllib &amp;amp; re

第三个主题地址:http://www.pythonchallenge.com/pc/def/ocr.html Hint1:recognize the characters. maybe they are in the book, but MAYBE they are in the page source. Hint2: 网页源代码的凝视中有: find rare characters in the mess below:以下是一堆字符. 显然是从这对字符中找出现次数最少的:注意忽略空白符.出现次

Python challenge通关代码及攻略(9-16)

第九题 题目分析 图片上和上一题一样.有奇怪的黑点点.此题应该考察的与上题相同也是图像解析类的. 查看源码. 页面上可以下载good.jpg.然后提示first+second=? 然后first和second各对应一系列的数字.那么应该是两个数字加起来,代表一个像素点. 如果我们在原图片上涂黑点,那么看不出什么变化.于是我们新建一个白底图片,再这个上面涂黑点. 考察知识点 Python-Image 基本的图像处理操作(赞) http://www.aichengxu.com/view/39904

Python Challenge Level 6

惭愧,这一题是参考别人的博客做出来的,主要的难点在 1.怎么得到zip文件 2.comments是个什么东西,原作者也在博客中吐槽“ what the hell are the comments?" 从这一题中我发现 1.提示信息不一定只在本网页,可以适当修改网址获取另外的信息. 2.对于提示中你所不能理解的信息如本题中的”comments“可以尝试在python doc中搜索(这一点往往是解题的关键),还有python doc可以在你的安装文件夹中找到 代码如下: 1 # http://www

Python Challenge 0~2

第O关 用python计算2 ** 38,替换url即可 第1关 确实蒙了,最后还是GOOGLE了一下,才明白是指所有字母位移>>两位 import string trans = str.maketrans('abcdefghijklmnopqrstuvwxyz','cdefghijklmnopqrstuvwxyzab') print('''g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr

Python Challenge 过关心得(1)

正式开始第1关,这一关的URL的特殊部分是map. 这关的图片上有一个本子,上面写着K→M,O→Q,E→G,稍微思索就能发现这几个字母都是按照字母表的顺序向后移动了两位,那么最投机取巧的方法就是把map的3个字母按照这个规则改动就行了.虽然这个是我想要的结果,但却并不是我想要的过程,还是得按照正规的编程方法来,而且下面还有其他的提示,姑且先全部看完. 图片下方有一行提示:三思而后解题.再下方是几行毫无规则的字母组合,很显然是要通过上述规则转化的. 对于这样的转换,很自然的想到的就是ASCII码.