python挑战之level 30

本文介绍了解决Python挑战中一个谜题的过程,通过解析CSV文件中的7367个浮点数,转换为图像揭示隐藏信息,并进一步解读隐藏文本。


连接为: http://www.pythonchallenge.com/pc/ring/yankeedoodle.html

密码:(repeat,switch)

推荐视频: #30 relax you are on 30 一波三折

————————————————————————————————————————


标题:relax you are on 30

注释: <!-- while you look at the csv file -->

提示:The picture is only meant to help you relax

——————————————————————————————————————————————————————————

那我们怎么样子解题呢?看注释,提示csv file ,我们改改后缀,结果有一个文件下载下来,这是一个excel.里面很多数据,包含7367个浮点数的文件不知道怎么计算。

百度一下:里面一共有7367个浮点数,7367=139*53,用浮点数*256当灰度画成139宽53高的图像。显示出了一个方程。

<pre name="code" class="python">import re
from  PIL import Image
with open('yankeedoodle.csv','r') as f:
    text=f.read()
#获取浮点数列表
data=re.findall(r'([.\d+]+)',text)

#采用float*256获得灰度值
databyte=bytearray(int(256*float(i)) for i in data)
#写入图片中
im=Image.new('P',(53,139))
im.putdata(databyte)
#图片是倒置的。所以先旋转,然后在新图片上再颠倒
nim = im.transpose(Image.ROTATE_90)
nim = nim.transpose(Image.FLIP_TOP_BOTTOM)
nim.save('output.png')


 



使用方程:

s = [chr(int(data[i][5]+data[i+1][5]+data[i+2][6])) for i in range(0,len(data)-2,3)]  
print (''.join(s))  
结果为:

So, you found the hidden message.
There is lots of room here for a long message, but we only need very little space to say "look at grandpa", so the rest is just garbage. 

但是我的字符串后面多了一大串乱码。不知道怎么回事

下一关为:http://www.pythonchallenge.com/pc/ring/grandpa.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值