博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
<pythonchallenge.com>----Lv1
阅读量:4590 次
发布时间:2019-06-09

本文共 2219 字,大约阅读时间需要 7 分钟。

一个有趣的python学习网站,就是在给出的图片和提示信息的帮助下,利用python解谜,然后进入下一关。

第0关图片显示2的38次方。

可以猜想2**38=274877906944与下一关的网站有关,于是将url改为274877906944.html进入第一关。

在第一关看见如下图片

以及一段字符串:

msg='''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. '''

 

由图可以看出这应该是简单的字符转换解码,将原字符换为其后的两个字符。

于是我们可以利用translate方法来处理这个问题。

# -*- coding: utf-8 -*-import stringmsg='''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.'''instr="abcdefghijklmnopqrstuvwxyz"outstr="cdefghijklmnopqrstuvwxyzab"table=string.maketrans(instr, outstr)astr=msg.translate(table)print(astr)
网站给出的答案转换表写得比我这个菜鸟专业多了:table = string.maketrans(string.ascii_lowercase,string.ascii_lowercase[2:]+string.ascii_lowercase[:2])

输出为:

>>> 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.

 又输出可知要我们应用到url上。

map----ocr

于是我们将url地址改为ocr.html进入到下一关。

在这关我们学习了translate方法的使用。

translate方法的主要作用就是进行字符的替换,使用方法如下:

        str.translate(strtable,[delete])

str是需要被转换的字符串,strtable是转换表,delete是一个可选字符串参数,其作用是过滤掉str里指定字符。

strtable通过maketrans方法获得,调用方式如下:

  strtable=string.maketrans(instr,outstr) 

instr是原始字符,outstr是转换后的字符。其中len(instr)=len(outstr)。

于是,在看看这个封装的函数,在处理字符转换的时候就很省事了。

#代码转自http://blog.csdn.net/lingedeng/article/details/7045443def translator(frm='', to='', delete='', keep=None):      if len(to) == 1:          to = to * len(frm)            trans = string.maketrans(frm, to)      if keep is not None:          trans_all = string.maketrans('', '')          #keep.translate(trans_all, delete),从要保留的字符中剔除要删除的字符           #trans_all.translate(trans_all, keep.translate(trans_all, delete)),从翻译表中删除要保留的字符,即取保留字符的补集           delete = trans_all.translate(trans_all, keep.translate(trans_all, delete))                def translate(s):          return s.translate(trans, delete)                return translate

 

 

转载于:https://www.cnblogs.com/luobuda/p/pythonchallenge-Lv1.html

你可能感兴趣的文章
关于Cocos2d-x中背景音乐和音效的添加
查看>>
.Net持续集成 —— Jenkins+Git+WebDeploy
查看>>
01_Numpy基本使用
查看>>
checkbox和文字对齐
查看>>
JConsole远程连接配置 服务器监控工具
查看>>
了解HTTP协议栈(实践篇)
查看>>
loj10035. 「一本通 2.1 练习 1」Power Strings
查看>>
%s的用法
查看>>
调用底层不能直接访问的类和方法
查看>>
清理缓存的方法 #DF
查看>>
JAVA array,map 转 json 字符串
查看>>
2017-12-27练习
查看>>
NET设计规范(二) 命名规范
查看>>
VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2
查看>>
SSL延迟
查看>>
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>
深入理解DIP、IoC、DI以及IoC容器
查看>>
赋值文件
查看>>
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>