从今天开始我将要持续更新python challenge 的攻略 我会尽可能的详细描述 challenge中用到的库 第三方函数 以及一些思路 当然我的方法坑定不是最优解 这只是根据我的理解或者一些其他网站上面参考的一些东西

第一个python challenge 0 跳过 因为过于简单 现在正式开始python challenge 01 的攻略讲解

首先题目的意思应该很明了了 就是这是一个位移加密 我们要把这些字母进行一些还原从而得到我们所需要的key 观察题目可以知道每个字母都是向后移动两位的 所以我们应该想到要用re库 就是使用正则表达式来进行 我的构思就是通过循环来实现每个翻译 然后我们新建一个列表来保存我们翻译之后的字符 在这里还有一个关键的就是我们如何来翻译这些字符呢 我们应该很容易的联想到了ASCII码 那么在python里面如何实现 就是利用ord 和chr ord函数就是把所对应的字符编译成ASCII码 chr 函数就是把 对应的数值 编译成 字符 所以 我们 只需要 ord(i) chr(i)

然后进行加减之后 再转换成字符的形式保存在列表之中 本来我以为这样就结束了 但是在这些编译完成之后我发现有一个问题就是 这里 作者的意思就是y编译成a 但是光这样的话 我的程序就会出现问题 所以我在循环中加了一个if语句来进行判断 当然这个方法不如网上的方法好 但是可以解决问题嘿嘿嘿 那么最后上代码!

import re
text = input("please what you like and i will translate it")
list =[]
for i in text:
if re.match(r'^[a-zA-Z]$',i):
if i=='y':
new='a'
list.append(new)
elif i=='z':
new='b'
list.append(new)
else:
new =ord(i)
new+=2
list.append(chr(new))
elif re.match(r'\s',i):
new=i
list.append(new)
str1 ="".join(list) # 这个很好用 join 函数可以把引号都进行替换
print(str1)
这里我还是要多说一下 最后的这个join函数 这个函数我觉得是相当的好用 就是可以把列表里面的东西变成字符 举个例子就清楚了 原来列表是这样的['a','sf,'dfv']输出就是 asfdfv
ok那么第一次挑战差不多就是这样了


发表评论

电子邮件地址不会被公开。 必填项已用*标注