pythonchallenge初试


第零题

http://www.pythonchallenge.com/pc/def/0.html
简单易懂,计算2的38次方,得到274877906944L将地址替换一下变成:
http://www.pythonchallenge.com/pc/def/274877906944.html
跳转到第一题

第一题

http://www.pythonchallenge.com/pc/def/map.html
图片上显示一个转化k到m,o到q,e到g。
试着用str.replace替换了一下发现信息还是乱码。
算了一下应该是每个字母要acsii码加2,简单一点可以这样:
s = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
sl = s.split(" ")
print " ".join(["".join(map(lambda x:ord(x)+2>122 and chr(ord(x)+2-26) or chr(ord(x)+2),list(x))) for x in sl])

当然也可以这样:
import string
s = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
s.translate(string.maketrans("abcdefghijklmnopqrstuvwxyz","cdefghijklmnopqrstuvwxyzab"))

得到的信息是:
"i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url."
对map使用一下同样的规则得到ocr,得到第二题地址

第二题

http://www.pythonchallenge.com/pc/def/ocr.html
提示要在源代码里面找
打开源代码发现要在一堆东西里面找几个字母
懒得复制粘贴,代码解决
import urllib2
s = urllib2.urlopen("http://www.pythonchallenge.com/pc/def/ocr.html")
j = s.read()
s.close()
sj = j[j.rfind("<!--"):]
res = []
for x in sj:
    if x.isaplha():res.append(x)
print "".join(res)
得到equality

第三题

http://www.pythonchallenge.com/pc/def/equality.html
很明显不过,又是在源代码里找东西,不过这次的标题给足了提示:re
One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.
刚开始读题的时候,以为是一个小写字母三边都有大写字母,去找开头跟结尾的字符,发现找出来太多有点不对
然后仔细读题才明白是一个小写字母两边有三个大写字母,然后写出了下面的正则式:
import re
p = re.compile("[A-Z]{3}([a-z])[A-Z]{3}")

结果发现还是太多,想了一下这个表达式对两边都是大于三的也匹配出来了,所以要修改一下。最终代码:
import urllib2,re
s = urllib2.urlopen("http://www.pythonchallenge.com/pc/def/equality.html")
j = s.read()
s.close()
sj = j[j.rfind("<!--"):]
p = re.compile("[a-z]+[A-Z]{3}([a-z])[A-Z]{3}[a-z]+")
print "".join(p.findall(sj))
得到linkedlist
进入http://www.pythonchallenge.com/pc/def/linkedlist.html提示要进linkedlist.php。进入第四题

第四题

http://www.pythonchallenge.com/pc/def/linkedlist.php
应该算是蛮奇怪的一道题。点开图片到达http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345提示你下一个nothing是44827
查看源代码提示重复400次左右的动作就能得到答案(实际并没有400次)
好吧 使用urllib2来搞搞
一开始的代码是这样的:
import re,urllib2
import urllib
p = re.compile("\d+")
rs = "12345"
def sss():
    global rs
    for i in range(0,402):
            s = urllib2.urlopen("http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="+rs)
            source = s.read()
            rs = p.findall(source)
            s.close()
            if rs:
                print rs[-1],
                rs = rs[-1]
            else:
                print i,source
                break
sss()

结果i到85的时候告诉我要除以2
不能忍啊!所以随便改了一下:
import re,urllib2
import urllib
p = re.compile("\d+")
rs = "12345"
def sss():
    global rs
    for i in range(0,402):
            s = urllib2.urlopen("http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="+rs)
            source = s.read()
            frs = rs
            rs = p.findall(source)
            s.close()
            if rs:
            	print rs[-1],
                rs = rs[-1]
            else:
            	if source.find("Divide by two")!=-1:
``            		rs = str(int(frs)/2)
            	else:
            		print i,source
            		break

sss()
最后得到250 peak.html。好的第五题地址也知道了。

第五题

http://www.pythonchallenge.com/pc/def/peak.html
叫我发音,看源代码问你peak hell发音像什么。
开了谷歌翻译,提起来有点像pick it up啥的
源代码还提示:peakhell src="banner.p"
看了一下banner.p有点像某个系列化掉的东西,像struct,marshal之类的
找了一下python的在线文档,序列化的模块p开头也只有pickle了(读音一点都不接近啊喂!)
然后看了一下example直接暴露:
>>> import pickle
>>> reader = pickle.load(open('save.p', 'rb'))
>>> reader.readline()
'4:     """Print and number lines in a text file."""'
把banner.p下载了下来,用下面的代码
import pickle
print pickle.load(open("d:\\banner.p","rb"))#习惯性丢D盘
居然得到了
[[(' ', 95)], [(' ', 14), ('#', 5), (' ', 70), ('#', 5), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 6), ('#', 3), (' ', 6), ('#', 4), (' ', 3), ('#', 3), (' ', 9), ('#', 3), (' ', 7), ('#', 5), (' ', 3), ('#', 3), (' ', 4), ('#', 5), (' ', 3), ('#', 3), (' ', 10), ('#', 3), (' ', 7), ('#', 4), (' ', 1)], [(' ', 3), ('#', 3), (' ', 3), ('#', 2), (' ', 4), ('#', 4), (' ', 1), ('#', 7), (' ', 5), ('#', 2), (' ', 2), ('#', 3), (' ', 6), ('#', 4), (' ', 1), ('#', 7), (' ', 3), ('#', 4), (' ', 1), ('#', 7), (' ', 5), ('#', 3), (' ', 2), ('#', 3), (' ', 5), ('#', 4), (' ', 1)], [(' ', 2), ('#', 3), (' ', 5), ('#', 3), (' ', 2), ('#', 5), (' ', 4), ('#', 4), (' ', 3), ('#', 3), (' ', 3), ('#', 4), (' ', 4), ('#', 5), (' ', 4), ('#', 4), (' ', 2), ('#', 5), (' ', 4), ('#', 4), (' ', 3), ('#', 3), (' ', 5), ('#', 3), (' ', 3), ('#', 4), (' ', 1)], [(' ', 1), ('#', 3), (' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 3), ('#', 3), (' ', 4), ('#', 3), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 3), (' ', 6), ('#', 4), (' ', 2), ('#', 4), (' ', 1)], [(' ', 1), ('#', 3), (' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 10), ('#', 3), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 3), (' ', 7), ('#', 3), (' ', 2), ('#', 4), (' ', 1)], [('#', 4), (' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 5), ('#', 2), (' ', 3), ('#', 3), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 1), ('#', 4), (' ', 7), ('#', 3), (' ', 2), ('#', 4), (' ', 1)], [('#', 4), (' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 3), ('#', 10), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 1), ('#', 14), (' ', 2), ('#', 4), (' ', 1)], [('#', 4), (' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 3), (' ', 4), ('#', 4), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 1), ('#', 4), (' ', 12), ('#', 4), (' ', 1)], [('#', 4), (' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 1), ('#', 4), (' ', 5), ('#', 3), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 1), ('#', 4), (' ', 12), ('#', 4), (' ', 1)], [(' ', 1), ('#', 3), (' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 1), ('#', 4), (' ', 5), ('#', 3), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 3), (' ', 12), ('#', 4), (' ', 1)], [(' ', 2), ('#', 3), (' ', 6), ('#', 2), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 3), (' ', 4), ('#', 4), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 3), ('#', 3), (' ', 6), ('#', 2), (' ', 3), ('#', 4), (' ', 1)], [(' ', 3), ('#', 3), (' ', 4), ('#', 2), (' ', 3), ('#', 4), (' ', 5), ('#', 4), (' ', 3), ('#', 11), (' ', 3), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 4), ('#', 3), (' ', 4), ('#', 2), (' ', 4), ('#', 4), (' ', 1)], [(' ', 6), ('#', 3), (' ', 5), ('#', 6), (' ', 4), ('#', 5), (' ', 4), ('#', 2), (' ', 4), ('#', 4), (' ', 1), ('#', 6), (' ', 4), ('#', 11), (' ', 4), ('#', 5), (' ', 6), ('#', 3), (' ', 6), ('#', 6)], [(' ', 95)]]
加了一下每个列表项带的数字,都是95,猜测是重复次数
修改了一下代码
import pickle
def five():
	f = open("d:\\banner.p","rb")
	l = pickle.load(f)
	f.close()
	print "\n".join(["".join(map(lambda (x,y):x*y,i)) for i in l])

five()
酷炫的结果啊:
"""
                                                                                               
              #####                                                                      ##### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
               ####                                                                       #### 
      ###      ####   ###         ###       #####   ###    #####   ###          ###       #### 
   ###   ##    #### #######     ##  ###      #### #######   #### #######     ###  ###     #### 
  ###     ###  #####    ####   ###   ####    #####    ####  #####    ####   ###     ###   #### 
 ###           ####     ####   ###    ###    ####     ####  ####     ####  ###      ####  #### 
 ###           ####     ####          ###    ####     ####  ####     ####  ###       ###  #### 
####           ####     ####     ##   ###    ####     ####  ####     #### ####       ###  #### 
####           ####     ####   ##########    ####     ####  ####     #### ##############  #### 
####           ####     ####  ###    ####    ####     ####  ####     #### ####            #### 
####           ####     #### ####     ###    ####     ####  ####     #### ####            #### 
 ###           ####     #### ####     ###    ####     ####  ####     ####  ###            #### 
  ###      ##  ####     ####  ###    ####    ####     ####  ####     ####   ###      ##   #### 
   ###    ##   ####     ####   ###########   ####     ####  ####     ####    ###    ##    #### 
      ###     ######    #####    ##    #### ######    ###########    #####      ###      ######
                                                                                               
"""
得到channel

第六题

http://www.pythonchallenge.com/pc/def/channel.html
一个捐助按钮。。。看了一下源码还真的是捐助按钮。
源码还提示zip
估计突破点在图片上吧,然而一番改后缀之类的并没有什么用。
然后又看了看,他好像指了指html,应该是改url
果不其然http://www.pythonchallenge.com/pc/def/channel.zip得到channel.zip
解压到D:\channel下面
读一下readme告诉你从90052开始,并且答案也在channel.zip里。一道类似第四题的题
import re
nexthing = "90052"

def six():
    global nexthing
    p = re.compile("\d+")
    #ff = open("d:\\channel.txt","w")
    for i in range(0,909):
        with open("d:\\channel\\"+nexthing+".txt") as f:
            source = f.read()
            #print >> ff,source
            rs = p.findall(source)
            f.close()
            if rs:
                print rs[-1],
                nexthing = rs[-1]
            else:
                print 
                print i,source
                #ff.close()
                return 
six()
告诉我Collect the comments.看了一下python里zipfile的用法,有一个zipfile.ZipFile(filename,mode).getinfo(name)的方法,难道是这个?
修改一下代码:
import zipfile
nexthing = "90052"

def six():
    global nexthing
    p = re.compile("\d+")
    ff = zipfile.ZipFile("d:\\channel.zip","r")
    comment = []
    for i in range(0,909):
        with open("d:\\channel\\"+nexthing+".txt") as f:
            source = f.read()
            #print >> ff,source
            comment.append(ff.getinfo(nexthing+".txt").comment)
            rs = p.findall(source)
            f.close()
            if rs:
                print rs[-1],
                nexthing = rs[-1]
            else:
                print 
                print i,source
                print "".join(comment)
                return 
six()
结果得到:
"""
****************************************************************
****************************************************************
**                                                            **
**   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      **
**                                                            **
****************************************************************
 **************************************************************
"""
我表示无语。。这是怎么搞进去的
http://www.pythonchallenge.com/pc/def/hockey.html
it's in the air. look at the letters.
空气中的字母?一开始以为是a,i,r这样
然后又想可能是o2,h2之类的
最后试了一下oxygen结果就对了(什么鬼)


第七题

http://www.pythonchallenge.com/pc/def/oxygen.html
这道题纠结了几天,主要还是在安装PS跟找模块以及学习模块用法上面了
首先看到图片上面的黑色条纹我就觉得这就是信息
不过想要用python提取这样的条纹有点难度,因此我直接把它用ps截取了下来:
顺便看了一除了第一个块一个块都为7个像素
然后放到d:\\oxygencut.png
接下来需要安装pypng模块
源码包下载后安装 或者pip安装都可以
使用下面的代码得到信息:
import png
r = png.Reader(filename="d:\\oxygencut.png")
res = None
for row in r.read()[2]:
    res = row#只需读一行
    break
data = []
data.append(res[0])#第一块除外
for x in range(5*4,len(res),28):#每个像素4部分组成:RGBA
    data.append(res[x])
print "".join(map(chr,data))
得到信息:
"smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]"
居然被夸奖了
对最后的数组解密一下
得到integrity

第八题

http://www.pythonchallenge.com/pc/def/integrity.html
一个蜜蜂图片,下面说消失的link去哪了
移动鼠标发现蜜蜂可以点击,点击进去页面跳转,弹出对话框要求输入账号密码,似乎无解。
返回去原本的页面查看源代码,发现密码跟账号都在源代码里
<!--
un: 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'
pw: 'BZh91AY&SY\x94$|\x0e\x00\x00\x00\x81\x00\x03$ \x00!\x9ah3M\x13<]\xc9\x14\xe1BBP\x91\xf08'
-->
相同的前缀非常可疑,搜索发现是bz2的特有前缀,说明需要用bz2解一下:
import bz2,urllib2
s = urllib2.urlopen("http://www.pythonchallenge.com/pc/def/integrity.html")
j = s.read()
s.close()
sj = j[j.rfind("<!--"):]

for i in sj.splitlines():
    i = i.find(":")!=-1 and eval(i[i.find("'"):]) or None
    if i:
        print bz2.decompress(i)
得到 用户名是huge密码是file
进入第九题

第九题

http://www.pythonchallenge.com/pc/return/good.html
里面有奇怪的东西:
<!--
first+second=?

first:
146,399,163,403,170,393,169,391,166,386,170,381,170,371,170,355,169,346,167,335,170,329,170,320,170,
310,171,301,173,290,178,289,182,287,188,286,190,286,192,291,194,296,195,305,194,307,191,312,190,316,
190,321,192,331,193,338,196,341,197,346,199,352,198,360,197,366,197,373,196,380,197,383,196,387,192,
389,191,392,190,396,189,400,194,401,201,402,208,403,213,402,216,401,219,397,219,393,216,390,215,385,
215,379,213,373,213,365,212,360,210,353,210,347,212,338,213,329,214,319,215,311,215,306,216,296,218,
290,221,283,225,282,233,284,238,287,243,290,250,291,255,294,261,293,265,291,271,291,273,289,278,287,
279,285,281,280,284,278,284,276,287,277,289,283,291,286,294,291,296,295,299,300,301,304,304,320,305,
327,306,332,307,341,306,349,303,354,301,364,301,371,297,375,292,384,291,386,302,393,324,391,333,387,
328,375,329,367,329,353,330,341,331,328,336,319,338,310,341,304,341,285,341,278,343,269,344,262,346,
259,346,251,349,259,349,264,349,273,349,280,349,288,349,295,349,298,354,293,356,286,354,279,352,268,
352,257,351,249,350,234,351,211,352,197,354,185,353,171,351,154,348,147,342,137,339,132,330,122,327,
120,314,116,304,117,293,118,284,118,281,122,275,128,265,129,257,131,244,133,239,134,228,136,221,137,
214,138,209,135,201,132,192,130,184,131,175,129,170,131,159,134,157,134,160,130,170,125,176,114,176,
102,173,103,172,108,171,111,163,115,156,116,149,117,142,116,136,115,129,115,124,115,120,115,115,117,
113,120,109,122,102,122,100,121,95,121,89,115,87,110,82,109,84,118,89,123,93,129,100,130,108,132,110,
133,110,136,107,138,105,140,95,138,86,141,79,149,77,155,81,162,90,165,97,167,99,171,109,171,107,161,
111,156,113,170,115,185,118,208,117,223,121,239,128,251,133,259,136,266,139,276,143,290,148,310,151,
332,155,348,156,353,153,366,149,379,147,394,146,399

second:
156,141,165,135,169,131,176,130,187,134,191,140,191,146,186,150,179,155,175,157,168,157,163,157,159,
157,158,164,159,175,159,181,157,191,154,197,153,205,153,210,152,212,147,215,146,218,143,220,132,220,
125,217,119,209,116,196,115,185,114,172,114,167,112,161,109,165,107,170,99,171,97,167,89,164,81,162,
77,155,81,148,87,140,96,138,105,141,110,136,111,126,113,129,118,117,128,114,137,115,146,114,155,115,
158,121,157,128,156,134,157,136,156,136
-->
然后各种尝试完全不知道给的这两个东西到底有什么用,有点想放弃
---------------------------------------------2016.5.8突然发现:
卧槽,今天上来看看自己的解题过程,发现第八题里面有个很类似的第九题提供
的数组的html代码,就是map区域,难道是这个?我决定试试
第八题的map区域:
	<map name="notinsect">
	<area shape="poly" 
		coords="179,284,214,311,255,320,281,226,319,224,363,309,339,222,371,225,411,229,404,242,415,252,428,233,428,214,394,207,383,205,390,195,423,192,439,193,442,209,440,215,450,221,457,226,469,202,475,187,494,188,494,169,498,147,491,121,477,136,481,96,471,94,458,98,444,91,420,87,405,92,391,88,376,82,350,79,330,82,314,85,305,90,299,96,290,103,276,110,262,114,225,123,212,125,185,133,138,144,118,160,97,168,87,176,110,180,145,176,153,176,150,182,137,190,126,194,121,198,126,203,151,205,160,195,168,217,169,234,170,260,174,282" 
		href="../return/good.html" />
	</map>
修改之后!果然有效果啊

哈哈 是头牛
尝试输入:http://www.pythonchallenge.com/pc/return/cow.html
发现作者提示这是头公牛,作者还是挺好人的
于是输入:http://www.pythonchallenge.com/pc/return/bull.html
果然进入第十题了!停滞了好几天的做题又可以继续了!!!!!

第十题

http://www.pythonchallenge.com/pc/return/bull.html
问你len(a[30])是多少。查看源码里面有个sequence.txt
点击相应的区域(那头纠结好久的牛,看到是这样的:
a = [1, 11, 21, 1211, 111221, 
今天看视频刚好看到!!!!
http://www.bilibili.com/video/av4579189/
介绍最后一个游戏时刚好提到,
每一项表示的是前面的一项有多少个数
比如第一项为1个1所以第二项为11
第二项为2个1所以第三项为21
第三项为1个2,1个1所以第四项为1211
以此类推
那么这个就轻松解决了
def ten():
    a = ["1","11","21","1211","111221"]
    while len(a) != 31:
        c,n = 0,0
        r = []
        for i in a[-1]:
            
            if i!=n:
                if c!= 0:
                    r.append("%d%s"%(c,n)) 
                n = i
                c = 1
            else:
                c+=1
        r.append("%d%s"%(c,n))
        x = "".join(r)
        a.append(x)
    return len(a[30])
得到5808

第十一题

http://www.pythonchallenge.com/pc/return/5808.html
什么都没有- -连源码里面也没有提示
标题写道odd even  奇偶
也许问题是在图片上?
========================0x40月号更新
忙了好几个星期的期末作业,终于有时间拿出来做了,很明显问题在图片上。
一开始以为是隐写术,不过打开ps就知道是在像素上做了手脚。
因此得下载PIL库进行操作,注意目前最新版本还不支持python3,以及在linux上安装需要安装好几个依赖库。
下载安装之后,从ps上来看应该是交替提取x为偶数,奇数的像素点,题目本身也提醒了我们,由于不知道是那些黑色点是信息还是其他,两个一起提取就好了
因此代码如下:
def eleven():
    img = Image.open("d:\\cave.jpg")
    black = Image.new("RGB",(320 , 480))
    convert = Image.new("RGB",(320 , 480))
    flag = 0
    for y in range(0,480):
        for x in range(0,640):
            if x%2 == flag:
                black.putpixel((x/2,y),img.getpixel((x,y)))
            else:
                convert.putpixel((x/2,y),img.getpixel((x,y)))
        if flag == 0:flag = 1
        else:flag = 0
    black.save("d:\\caveblack.jpg","JPEG")
    convert.save("d:\\caveconvert.jpg","JPEG")

得到两张图片:

明显答案就是evil,因此下一关的就是evil了

第十二题

http://www.pythonchallenge.com/pc/return/evil.html

没有更多推荐了,返回首页