zoukankan      html  css  js  c++  java
  • Python Challenge 第九关

    第九关只有一幅图,上面有一些黑点。网页名字叫:connect the dots。可能是要把这些点连起来。

    查看源代码,果然有两个整数集合 first 和 second。并且有个提示:first+second=?。这两个集合很可能就是点的坐标。

    第一步,把这两个集合提取出来。本来我想跟以前一样,用 urllib 模拟登陆然后用正则表达式提取。结果发现需要输入用户名和密码(上一关得到的)。用 FireFox 分析了半天没得到 POST 消息的格式,就放弃了,直接把页面下载下来,然后打开 htm 文件来得到结果:

    fobj = open(r'C:UsersLeoDesktopconnect the dots.htm')
    page = fobj.read()
    fobj.close()
    transTable = string.maketrans('','')
    delSym = '
    '
    firstRes = re.findall('first:s+(.*)s+second', page, re.S)[0].translate(transTable, delSym).split(',')
    firstList = [int(i) for i in firstRes]
    secondRes = re.findall('second:s+(.*)s+-->', page, re.S)[0].translate(transTable, delSym).split(',')
    secondList = [int(i) for i in secondRes]

    得到两个列表后,就去查询 PIL 库有什么函数可以画线,得知 ImageDraw 模块的 line() 方法可以画线,而且输入参数刚好是列表,就试了一下:

    img  = Image.open(r'C:UsersLeoDesktopgood.jpg')
    draw = ImageDraw.Draw(img)
    draw.line(firstList, fill = '#FF0000')
    draw.line(secondList, fill = '#FF0000')  
    img.show()

    马上得到了结果:

    可以看到图上面出现了一头牛,想一下牛的单词,立马想到芝加哥公牛队,就把 url 改为 bull,进入下一关:http://www.pythonchallenge.com/pc/return/bull.html

  • 相关阅读:
    LightOj1054
    LightOj1028
    Docker仓库(转载)
    Dockerfile(转载)
    Docker存储卷(转载)
    容器虚拟化网络和Docker容器网络(转载)
    Docker镜像管理基础(转载)
    Docker基础用法(转载)
    docker容器技术基础入门(转载)
    Redis 3种安装部署方式
  • 原文地址:https://www.cnblogs.com/dukeleo/p/3465710.html
Copyright © 2011-2022 走看看