The Python Challenge Level-5 Solution

The Python Challenge Level-5 Solution

先附上我在Github上存放的代码仓库: The Python Challenge

先看提示:

pronounce it 

再看看网页源码,’peak hell’能代表什么?

我一开始以为是’pick’什么东西,点开’banner.p’之后没发现什么规律,于是先google了一下’peak hell’,发现了Python有pickle这么一个模块,那么就必然和这个有关系了。

pickle这个模块是python用来保存数据的,主要是loads和dumps方法的运用(这两个是对内存进行操作,如果要对硬盘进行操作,形成文件等形式,就是用load和dump),一个是读,一个是写,这里因为是直接从网页中获取数据,所以只要读就行了。

读完能发现这实际上是一个list组,再仔细点观察的话,就会注意到每一个[]中,把’ ‘和’#’后跟着的数字加起来,恰好是95。于是可以估计,这应该是利用点阵的方式来进行显示,而点阵的一行,有95个字符。这样就有了如下代码:

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'Yuuki_Dach'

from urllib import request
import pickle

pyUrl = 'http://www.pythonchallenge.com/pc/def/banner.p'
req = request.Request(pyUrl)
resp = request.urlopen(req)
urlContent = resp.read()
code = []
pic = pickle.loads(urlContent)
for line in pic:
    for letter, num in line:
        code.append(num*letter)
    code.append('\n')
print("".join(code))

运行之后得到的点阵图是



              #####                                                                      ##### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
      ###      ####   ###         ###       #####   ###    #####   ###          ###       #### 
   ###   ##    #### #######     ##  ###      #### #######   #### #######     ###  ###     #### 
  ###     ###  #####    ####   ###   ####    #####    ####  #####    ####   ###     ###   #### 
 ###           ####     ####   ###    ###    ####     ####  ####     ####  ###      ####  #### 
 ###           ####     ####          ###    ####     ####  ####     ####  ###       ###  #### 
####           ####     ####     ##   ###    ####     ####  ####     #### ####       ###  #### 
####           ####     ####   ##########    ####     ####  ####     #### ##############  #### 
####           ####     ####  ###    ####    ####     ####  ####     #### ####            #### 
####           ####     #### ####     ###    ####     ####  ####     #### ####            #### 
 ###           ####     #### ####     ###    ####     ####  ####     ####  ###            #### 
  ###      ##  ####     ####  ###    ####    ####     ####  ####     ####   ###      ##   #### 
   ###    ##   ####     ####   ###########   ####     ####  ####     ####    ###    ##    #### 
      ###     ######    #####    ##    #### ######    ###########    #####      ###      ######

大家请把终端的宽度拉大一点,不然会和我一开始一样,读不出什么东西来,怀疑是不是程序写错了 =_=

接下来就是把channel输入到url中了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值