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

第九题

题目分析

图片上和上一题一样。有奇怪的黑点点。此题应该考察的与上题相同也是图像解析类的。

查看源码。

页面上可以下载good.jpg。然后提示first+second=?

然后first和second各对应一系列的数字。那么应该是两个数字加起来,代表一个像素点。

如果我们在原图片上涂黑点,那么看不出什么变化。于是我们新建一个白底图片,再这个上面涂黑点。

考察知识点

Python-Image 基本的图像处理操作(赞)

http://www.aichengxu.com/view/39904

Python图形图像处理库的介绍之Image模块

http://onlypython.group.iteye.com/group/wiki/1372-python-graphics-image-processing-library-introduced-the-image-module

Python Imaging Library (PIL)下载

http://www.pythonware.com/products/pil/

代码及结果

import re, Image  

file = open(‘d:/Python/good.html‘)
message = re.findall(‘(<!--[^-]+-->)‘, file.read(), re.S)[1]
file.close()  

first = re.findall(‘(/d+)‘,re.findall(‘first:(.+)second‘,message,re.S)[0],re.S)
second = re.findall(‘(/d+)‘,re.findall(‘second:(.+)>‘,message,re.S)[0],re.S)  

all = first + second  

im = Image.open(‘d:/Python/good.jpg‘)
im2 = Image.new(im.mode, im.size)  

for x in range(0,len(all),2):
    im2.putpixel((int(all[x]),int(all[x+1])),(255,255,255,255))
im2.show()  

显示一只牛,那么就是bull

输入http://www.pythonchallenge.com/pc/return/bull.html,即通关

第十题

题目分析

光看网页上显示的 len(a[30])=? 是让我们计算a数组下标为30的元素的长度

不过按照惯例。查看源码

老实说,这一串,并没有什么规律。而且按照 len(a[30])=? 这个提示,应该是会给一个数组让我们算。

此时发现href=”sequence.txt”很可疑,点击后

那么就是要让我们推算这个数组的 len(a[30])=多少

没看出规律。。百度后得知

11— 表示前一个数“1”是 1 个 1;

21— 表示前一个数“11”是 由 2 个 1 组成;

1211— 表示前一个数“21”是 由 1 个 2、1 个 1 组成;

111221— 即 11 12 21 ,表示前一个数“1211”是依次由 1 个 1,1 个 2,

2 个 1组成;

即每个数字描述前面一个数字的组成

考察知识点

找规律。

  1. Python中的除法

    http://blog.csdn.net/sicofield/article/details/8613877

    地板除(取整除):从Python2.2开始,增加了一个操作符 // ,以执行地板除://除法不管操作数为何种数值类型,总是会舍去小数部分,返回数字序列中比真正的商小的最接近的数字。

代码及结果

strings = [‘1‘,‘11‘]  

#计算1-30的元素
for i in range(1,31):
        #计数器重置
        j = 0
        temp = ‘‘
        #当计数器j小于当前元素的长度时(即当前元素的长度还未计算完毕时)
        while j < len(strings[i]):
                count = 1
                #当计数器j小于前一个元素的长度时且strings[i][j]==strings[i][j+1]
                while j<(len(strings[i])-1) and (strings[i][j]==strings[i][j+1]):
                        j = j + 1
                        count = count + 1
                temp = ‘%s%d%c‘ % (temp,count,strings[i][j])
                j = j + 1
        strings.append(temp)  

print (len(strings[30]))

结果是:5808

输入:http://www.pythonchallenge.com/pc/return/5808.html,通关

第十一题

题目分析

这个像马赛克一样的图片是什么鬼。。估计跟图片处理有关。

查看源代码。

点击

考察知识点

图片分析相关(跟第八题,第九题差不多)

很有可能是与图像坐标的奇偶有关,如果我们按照原图片的规格新建一个图片,而在该图片上只在坐标的奇值或者偶值上涂原图片上的点,发现全是黑乎乎的一片;所以我们再次尝试以原片大小的一半来处理

Python-Image 基本的图像处理操作(赞)

http://www.aichengxu.com/view/39904

Python图形图像处理库的介绍之Image模块

http://onlypython.group.iteye.com/group/wiki/1372-python-graphics-image-processing-library-introduced-the-image-module

Python Imaging Library (PIL)下载

http://www.pythonware.com/products/pil/

代码及结果

图片分析,我一向不太擅长。。这是百度的别人的源码。

原作者:

http://blog.csdn.net/billstone/article/details/4546725

import Image  

im = Image.open("cave.jpg")
odd = Image.new(im.mode, (im.size[0]/2, im.size[1]/2))
even = Image.new(im.mode, (im.size[0]/2, im.size[1]/2))  

for x in range(1,im.size[0],2):
    for y in range(1,im.size[1],2):
        odd.putpixel(((x-1)/2,(y-1)/2),im.getpixel((x,y)))  

for x in range(1,im.size[0],2):
    for y in range(1,im.size[1],2):
        even.putpixel((x/2,y/2),im.getpixel((x,y)))  

odd.save(‘odd.jpg‘)
even.save(‘even.jpg‘)  

运行代码,查看odd.jpg和even.jpg,发现两张图几乎是一样的,通过反色处理,我们在右上角发现evil的字样

输入http://www.pythonchallenge.com/pc/return/evil.html,即通关

第十二题

题目分析

页面没有文字信息,看图片,好像是要分牌。

查看源码

src=”evil1.jpg”只有这个看起来奇怪点,点击,还是显示发牌图片

考虑到图片显示的是发牌,将地址改为evil2.jpg

http://www.pythonchallenge.com/pc/return/evil2.jpg

提示上说:不是jpg,是gfx。那么就将后缀名改为gfx,这样就可以得到一个二进制文件。下载到电脑里

继续测试evil3.jpg

试试evil4.jpg

没反应了。。看来最关键的就是evil2.jpg

然后以发牌的方式将文件中的数据分发到五个新文件中,分发方式如下:evil.gfx的第一个字节给第一个文件,第二个字节给第二个文件,第三个字节给第三个文件,第四个字节给第四个文件,第五个字节给第五个文件,第六个字节给第一个文件,第七个字节给第二个文件……

考察知识点

范围解析操作符(::)

http://blog.csdn.net/chamtianjiao/article/details/6406751

代码及结果

在notepad++中,编辑exc12.py

#读取文件里的信息
f = open(‘evil2.gfx‘,‘rb‘)
content = f.read()
f.close()  

#新建一个图片,将文件中的字符开始平均分发
for i in range(5):
    f = open(‘%d.jpg‘ % i, ‘wb‘)
    f.write(content[i::5])
    f.close()
print("done!please check your file")

文件夹里有新文件,

点开看按照次序。分别是dis ,pro ,port,ional,最后一个被划掉了,不管它

组合英文单词就是disproportional。

因此,输入http://www.pythonchallenge.com/pc/return/disproportional.html,即通关

第十三题

题目分析

看图文字提示是打电话给恶魔?

查看源码

此时发现

area shape=”circle” coords=”326,177,45” href=”../phonebook.php”很可疑。

Phonebook就是电话簿,既然要打电话给恶魔,肯定要在电话簿里找到恶魔的电话号码~

点击phonebook.php

应该是跟xml有关。

百度后得知,是考察xmlrpclib模块

考察知识点

  1. python使用xmlrpc实例讲解

    http://www.jb51.net/article/44515.htm

代码及结果

首先,导入xmlrpclib,然后连接phonebook.php,接着使用listMethods方法查看了一下可使用的方法,发现有一个叫phone方法,再然后使用methodHelp方法查看了一下phone方法的帮助,于是乎这题就解出来了。
import xmlrpclib
xmlrpc = xmlrpclib.ServerProxy("http://www.pythonchallenge.com/pc/phonebook.php")
print xmlrpc.system.listMethods()
print xmlrpc.system.methodHelp(‘phone‘)
print xmlrpc.phone(‘Bert‘)  

最后会得到Bert的电话--555-ITALY

输入http://www.pythonchallenge.com/pc/return/italy.html,即通关

第十四题

题目分析

显示的是一圈面包,下面还有个图片挡住了什么东西?

查看源码

这个源码貌似提示的地方很多~

walk around:绕着走

– remember: 100*100 = (100+99+99+98) + (… :叫我们记住这行算式

两个图片。点击”italy.jpg,还是那个丑面包,没什么好注意的

点击wire.png,

感觉没啥头绪。。不过肯定是跟图片处理有关的

考察知识点

Image模块

代码及结果

这题没做出来,放个做出来的人的链接

http://blog.csdn.net/kosl90/article/details/7341181

l = [[i, i - 1 , i - 1, i - 2] for i in xrange(100, 1, -2)]
l = reduce(lambda x, y: x+y, l)
# print l, len(l)  

import Image
org = Image.open(‘level14.d/wire.png‘)
org_data = list(org.getdata())
res = Image.new(org.mode, (100, 100))
res_data = res.load()  

# (0,0)
#    ---->x
#    |
#    vy
dire = [(1, 0),  # > (x+1, y) right
        (0, 1),  # v (x, y+1) down
        (-1, 0),  # < (x-1, y) left
        (0, -1),  # ^ (x, y-1) up
        ]  

# init
v = 0
org_index = 0
res_pos = (-1, 0)
for times in l:
    for i in xrange(times):
        # pos will out of index if reset position after setting color
        res_pos = tuple(map(lambda x, y: x + y, res_pos, dire[v]))  # (res_pos[0] + dire[v][0], res_pos[1] + dire[v][1])  

        # f = open(‘level14.d/log.log‘,‘a‘)
        # print >> f, pos
        # f.close()  

        res_data[res_pos] = org_data[org_index]
        org_index += 1  

    v = (v + 1) % 4  # j + 1 if j != 4 else 0  

res.save(‘level14.d/res.png‘)  

最后得到了一只猫的图像,猫叫uzi

输入http://www.pythonchallenge.com/pc/return/uzi.html,即通关

第十五题

题目分析

日历上把26号圈住了,肯定有特别的含义

查看源码

让我们猜这个人是谁。

说he ain’t the youngest, he is the second。他是第二年轻的(在家里排名,不然跟谁比咧?)

buy flowers for tomorrow:也就是说27号,可能是葬礼或生日,需要为这天买花

恩。。好像这题不用python百度一下,或者熟悉欧洲名人事迹的人也能轻松猜出来

那这题考察的意图到底是什么呢?

仔细思考,我们只知道一个27号,只知道年龄,如果我们是对欧洲历史不太了解的(比如说是我),那么我们就需要缩小范围,毕竟现在已经是2016年了,不知道他到底是在哪一年出生的。

怎么缩小范围呢?从日历上来看的话,27号是星期二,这个可以用来缩小范围,那么还有没有别的条件呢?

图片右下角。。很模糊的图片中,数格子,可以发现2月只有29天,所以是闰年。

需要我们求出闰年时,1月27号是星期二的日期。然后再百度查那个人的信息是家中的次子就行了~

日期的处理,选择python的calendar和datetime模块

考察知识点

  1. Python时间模块datetime、time、calendar的使用方法

    http://www.jb51.net/article/77971.htm

  2. datetime模块

    python的datetime模块功能详解

代码及结果

在nodepad++中,编辑exc15.py

from calendar import isleap
from datetime import date  

TUESDAY = 1  

#从1800年到2000年
for year in range(1800,2000):
    t = date(year, 1, 27)
    #是闰年并且1月的27号是星期一
    if isleap(year) and t.weekday() == TUESDAY:
        print (t.isoformat())  

百度这些日期~

很显然是mozat

输入http://www.pythonchallenge.com/pc/return/mozart.html,即通关

第十六题

题目分析

肯定又是图片处理,查看源码

注意这句话let me get this straight

以粉色的点为基准,将其他像素点排成直线,应该就能出结果

考察知识点

image模块

代码及结果

import Image

im = Image.open("mozart.gif")
for y in range(im.size[1]):
    #获得像素点
    line=[im.getpixel((x, y)) for x in range(im.size[0])]
    idx=line.index(195)
    line=line[idx:]+line[:idx]
    #重新排列像素点
    [im.putpixel((x, y),line[x]) for x in range(len(line))]

im.show()

结果:

输入http://www.pythonchallenge.com/pc/return/romance.html,即通关

时间: 2024-10-21 16:53:45

Python challenge通关代码及攻略(9-16)的相关文章

Python Challenge 第 5 关攻略:peak

# -*- coding: utf-8 -*- # @Time : 2018/9/26 14:03 # @Author : cxa # @File : pickledemo.py # @Software: PyCharm import pickle fname="banner.p" with open(fname,'rb') as fs: data=pickle.load(fs) for line in data: print("".join(x[0]*x[1] f

Windows Socket五种I/O模型——代码全攻略(转)

Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权.这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误.但功能强大.为了解决这个问题,提出了进行I/O操作的一些I/O模型,下面介绍最常见的三种: Windows Socket五种I/O模型——代码全攻

(转载)Windows Socket五种I/O模型——代码全攻略

如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的.Windows操作系统提供了选择(Select).异步选择(WSAAsyncSelect).事件选择(WSAEventSelect).重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型.每一种模型均适用于一种特定的应用场景.程序员应该对自己的应用需求非常明确,而且综合考虑到程序的扩展性和可移植性等因素,作出自己的选择. 我会以一个回应反射式服务器(与<Windows网络

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

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

Python中文全攻略

Python中文全攻略[转] 这几天一直纠结月python的中文编码问题,发现一篇不错的文章,转过来留个念想. 原文链接:http://blog.csdn.net/mayflowers/archive/2007/04/18/1568852.aspx 1.        在Python中使用中文 在Python中有两种默认的字符串:str和unicode.在Python中一定要注意区分“Unicode字符串”和“unicode对象”的区别.后面所有的“unicode字符串”指的都是python里的

《刀塔传奇》第六章通关攻略

<刀塔传奇>第六章提尔湖通关攻略 对于很多玩家来说,把<刀塔传奇>每个副本拿下三星是一件强迫症的事情,绿云应用的小编也是如此,看着地图上满满的三星通关感觉很舒服~接下来小编给大家带来的是这一期第六章荆棘山谷提尔湖的通关攻略 美丽的湖泊干净的如同一面镜子周围树荫环绕,然而这样的美景结果被一群兽人包围了,拿起我们的武器和绿云应用中心的小编一起去打败他们吧. 在提尔湖这关,敌法的阵容搭配的很好,所以我们面对的阵容压力还是很大的,敌方的阵容带着两个治疗,治疗量很高,意味着打消耗战的话损失会

imToken 测评通关攻略

imToken 测评通关攻略 2017-10-19 imToken 在 1.3.3 版本新增了用户风险测评系统, 目的是为了让更多的用户了解钱包安全知识以及区块链的基本概念, 从某种程度上提升了整个区块链生态的认知水平.但是这也对很多小白用户带来了困扰, 反复测试都不过 (惨不忍睹程度堪比科目二), imToken 是希望用户可以通过帮助中心自主学习相关知识, 不过今天小刘特意为你带来了快速通过测评的攻略, 帮你迅速掌握去中心化钱包的安全知识. 所有问题大体可以分为三类, 分别为区块链基本概念.

VSCode插件开发全攻略(八)代码片段、设置、自定义欢迎页

更多文章请戳VSCode插件开发全攻略系列目录导航. 代码片段 代码片段,也叫snippets,相信大家都不陌生,就是输入一个很简单的单词然后一回车带出来很多代码.平时大家也可以直接在vscode中创建属于自己的snippets: 创建代码片段 那么如何在扩展中创建snippets呢? package.json文件新增如下: "contributes": { "snippets": [ { // 代码片段作用于那种语言 "language": &

Wargame narnia level 0 (中文攻略)

想写这个主要是因为我去谷歌搜到的攻略都是英文,看着有点吃力(菜B英语不好) , 然后就是分享交流技术. 比较有意思的一个闯关游戏(适合新手) 网站是:http://overthewire.org/wargames/narnia/ 游戏主要涉及基础的漏洞利用(环境是LINUX下的) 下面就开始吧, LINUX系统中 用SSH命令   登陆远程服务器 第0关的账号和密码都是narnia0 登陆后,需要我们利用的漏洞程序在 narnia这个文件夹里 服务器里把文件权限卡得很死,如果没有权限是不能执行一