PythonChallenge游戏体验0-3

PythonChallenge是一个在线的python过关游戏,一共有33关.玩这个游戏对熟悉python用法及相关库的使用都很有好处.

游戏地址:http://www.pythonchallenge.com

PythonChallenge-0地址 :
http://www.pythonchallenge.com/pc/def/0.html
图片如下
在这里插入图片描述
Hint: try to change the URL address.
题目解析:2^38次方

print(2**38)

答案:274877906944
访问 http://www.pythonchallenge.com/pc/def/274877906944.html 进入第1关

PythonChallenge-1地址 :
http://www.pythonchallenge.com/pc/def/274877906944.html
图片如下:
在这里插入图片描述
Hint: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.

这里结合:K ->Z O->Q E-G 这里猜测应该是将Hint 的每个字母右移两位,这明显是凯撒

#首次用字符串和for循环,就是将字符串进行替换
word = "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."
new_word = ''
for i in  word:
    if i.isalpha() and i not in 'yz': #这里isalpha是判断是否为字母
        new_word  += chr(ord(i)+2)  #ord是将字符转换成对应的ASCII码
    elif  i =='y':
        new_word += 'a'
    elif i =='z':
        new_word += 'b'
    else:
        new_word += i

print(new_word)

结果: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.

这里是hint是推荐使用string.maketrans()做,但是这里并没有使用,有兴趣的可以自己去使用,这里大致意思是将此刻url中的map关键字进行替换就过关了这里得到字符ocr

PythonChallenge-2地址 :
图片如下:
在这里插入图片描述
Hint:recognize the characters. maybe they are in the book,
but MAYBE they are in the page source.
这里hint提示有东西在源代码里 这里查看下源代码,发现了一大串字符串
以及一个隐藏Hint:find rare characters in the mess below
在这里插入图片描述
那意思就是统计下这一大串字符串中字符的频率,最小的几个字符就是答案

#python字符统计
#代码中两层循环其实可以用read函数代替
txt =open(r"file/02.txt",'r')
dict = {}
for line in txt:
    for char in line:
        if char in dict and char != '\n':
            dict[char] += 1
        else:
            dict[char] = 1
for i in dict:
    print("%s : %d" %(i,dict[i]) )

结果如下:

在这里插入图片描述
那就说明答案就是equality,还是一个单词这明显就是答案,替换url过关

PythonChallenge-3地址
http://www.pythonchallenge.com/pc/def/equality.html
图片如下:
在这里插入图片描述
Hint:One small letter, surrounded by EXACTLY three big bodyguards on each of its sides
这里大致意思就是 一个小写字母,两边都有三个大写字母。形如XXXxXXX,那这其中的小写字母就成关键点了,查看源代码发现一大串字符串,那看来是从这里面寻求这种格式的字符串咯
我的在这里插入图片描述
这里我用的方法是正则匹配,这里采用了python的re模块
有关Python 正则表达式的一些函数大家可以点击下面链接学习
https://www.runoob.com/python/python-reg-expressions.html
代码如下:

import re
regex = r"[^A-Z][A-Z]{3}[a-z][A-Z]{3}[^A-Z]"
REGEX = re.compile(regex)#将regex生成一个正则表达式Pattern对象
read = open(r"file/03.txt",'r').read()
result = REGEX.findall(read)#找到正则表达式所匹配的所有子串
print(result)

注意这里有一个匹配细节前后多了一个细节前后,题目是要匹配XXXxXXX但是前后多匹配了一个字符,这里是为了防止出现XXXXxXXXx 等情况出现

得到结果:['qIQNlQSLi', 'eOEKiVEYj', 'aZADnMCZq', 'bZUTkLYNg', 'uCNDeHSBj', 'kOIXdKBFh', 'dXJVlGZVm', 'gZAGiLQZx', 'vCJAsACFl', 'qKWGtIDCj']
因此答案为:linkedlist

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值