|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 漫天疯语 于 2021-2-1 23:07 编辑
[课后作业] 第020讲:函数:内嵌函数和闭包 | 课后测试题及答案中
1. 请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
a) 每位密码为单个小写字母
b) 每位密码的左右两边均有且只有三个大写字母
其实在每个字符串组左右各加一个小写‘a’就能解决问题
- def 解密(x):
- '''
- # a) 每位密码为单个小写字母
- # b) 每位密码的左右两边均有且只有三个大写字母
- '''
- f = open(x) # 注意读取路径时\符号需要*转义*
- g= '' # 创建明文存储器
- numer = 0
- H = f.readlines()
- for line in H:
- newline ='a'+line.replace('\n','')+'a' #将每组字符串前后各加一个小写字母避免查询溢出
- for each in range(4,len(newline)-4): #限制查询每组字符串字符从第4位开始查询到倒数第4位结束
- if newline[each].islower(): #如果该字符是小写
- # 如果该字符左右各三个都是大写 \
- # and 该字符左右第四位都不是大写(这就是为什么要前后加小写'a'的原因)
- if (newline[(each-3):each].isupper() and newline[(each+1):(each+4)].isupper())\
- and ((newline[each-4].isupper() or newline[each+4].isupper()) == False):
- temp = 1 #设置判断器temp 如果成立输出1
- else:
- temp = 0 #设置判断器temp 如果不成立输出0
- if temp == 1:
- g += newline[each] # 把符合条件的字符串存入g中
- print(newline[each-4:each],newline[each],newline[each+1:each+5],sep=' ')
- print('\n文件中的秘文是:',g, '\n')
- return g
- g = 解密("string2.txt")
- print(g)
复制代码
运行结果如下
mDSK i JKLk
jTJN l HZYl
zSKL o IOSc
sTUP v OCPz
qIEK e GGGw
hHIR f DBYz
wBGT i ABTm
jIOK s DPOa
yJFF h CSVe
qNTL c AEIe
文件中的秘文是: ilovefishc
ilovefishc
ps:我最先开始解这道题,先把文件中所有字符去除'\n'转换为一个字符串,结果和答案会有出入,会多几个字母:P |
|