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关卡壳啦。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。