鱼C论坛

 找回密码
 立即注册
查看: 1004|回复: 4

求助求助

[复制链接]
发表于 2020-6-19 18:45:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大佬,那道课后习题,要求把一个文本文件里隐藏的密码找出来,然后有以下两个要求:1.每位密码为单个小写字母;2.每位密码的左右两边均有且只有三个大写字母。我自己写了一下,用的是以下代码,然后有一个问题,就是字符串切片的时候,头尾两边each-3和each+4超出line这个字符串的范围了,所以这个问题该怎么解决呢。

f1=open(r'C:\Users\Administrator\Desktop\string2.txt')
list=[]
code=''

for line in f1:
    for each in line:
        if each.islower():
            if line[each-3:each].isupper() and line[each+1:each+4].isupper():
                if not line[each-4].isupper() and not line[each+4].isupper():
                    list.append(each)
list.reverse()

while list:
    code+=str(list.pop())

print(code)
f1.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-19 19:00:05 | 显示全部楼层
        通过设定合适的遍历下标范围来解决此问题。
        下面的代码供你参考
f = open(r'C:\Users\Administrator\Desktop\string2.txt')
str1 = f . read()
f . close()
s , p = 'a' + '' . join(str1 . split('\n')) + 'a' , ''
for k in range(4 , len(s) - 4):
    if s[k - 4] . islower() and s[k - 3 : k] . isupper() and s[k] . islower() and s[k + 1 : k + 4] . isupper() and s[k + 4] . islower() : p += s[k]
print(p)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-6-19 20:28:34 | 显示全部楼层
jackz007 发表于 2020-6-19 19:00
通过设定合适的遍历下标范围来解决此问题。
        下面的代码供你参考

请问是s,p是什么意思,s,p后面那串代码怎么理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-19 23:21:05 | 显示全部楼层
sturgeons 发表于 2020-6-19 20:28
请问是s,p是什么意思,s,p后面那串代码怎么理解

相当于
s = 'a' + '' . join(str1 . split('\n')) + 'a'
p = ''
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 00:54:40 | 显示全部楼层
本帖最后由 jackz007 于 2020-6-20 00:58 编辑
sturgeons 发表于 2020-6-19 20:28
请问是s,p是什么意思,s,p后面那串代码怎么理解


        s 是经过整理的从文件中读取到藏有密码的长字符串,p 是从 s 中提取到的符合条件的密码字符串,后面的代码就是从 s 的开始到结束,以连续 7 个字符为窗口,以 1 个字符为步长,循环遍历 s 中的每一个字符,判断中心字符及其两侧各 3 个字符的大小写情况是否符合密码字符特征,如果符合,就把中心字符添加到密码 p 中,最后打印出提取到的密码字符串 p
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 13:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表