sturgeons 发表于 2020-6-19 18:45:54

求助求助

各位大佬,那道课后习题,要求把一个文本文件里隐藏的密码找出来,然后有以下两个要求: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.isupper() and line.isupper():
                if not line.isupper() and not line.isupper():
                  list.append(each)
list.reverse()

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

print(code)
f1.close()

jackz007 发表于 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 . islower() and s . isupper() and s . islower() and s . isupper() and s . islower() : p += s
print(p)

sturgeons 发表于 2020-6-19 20:28:34

jackz007 发表于 2020-6-19 19:00
通过设定合适的遍历下标范围来解决此问题。
      下面的代码供你参考

请问是s,p是什么意思,s,p后面那串代码怎么理解

_荟桐_ 发表于 2020-6-19 23:21:05

sturgeons 发表于 2020-6-19 20:28
请问是s,p是什么意思,s,p后面那串代码怎么理解

相当于
s = 'a' + '' . join(str1 . split('\n')) + 'a'
p = ''

jackz007 发表于 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
页: [1]
查看完整版本: 求助求助