D2B 发表于 2018-7-26 16:40:22

关于《零基础入门学习Python》的第20讲课后作业习题

各位,小甲鱼的20讲课后作业题目中这样的一个题目:
请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
    a) 每位密码为单个小写字母Powered by bbs.fishc.com
    b) 每位密码的左右两边均有且只有三个大写字母

下文是我的答案:
str1 = '''ABSaDKSbRIHcRHGdDyIF'''
list1=[]
chars1='abcdefghijklmnopqrstuvwxyz'
chars2='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for each in str1:
    if each in chars1:
      a=str1.index(each)
      if (str1 in chars2) and (str1 in chars2) and (str1 in chars2) and (str1 in chars2) and (str1 in chars2) and (str1 in chars2):
               print(each)
               list1.append(each)
            
这样运行出来结果是:abc貌似代码没有问题,可是当我把str1改成str1 = '''ABSaDKSbRIHcRHGcdDIF''',打印结果为abcc
所以我想知道我这种方法是哪里有漏洞呢?谢谢!

BngThea 发表于 2018-7-26 16:48:59

如果第一个就是小写呢?
主要漏洞就是下标索引溢出导致实际索引的位置不对

D2B 发表于 2018-7-26 16:52:32

BngThea 发表于 2018-7-26 16:48
如果第一个就是小写呢?
主要漏洞就是下标索引溢出导致实际索引的位置不对

嗯嗯,是我想的太简单了,谢谢指教!
页: [1]
查看完整版本: 关于《零基础入门学习Python》的第20讲课后作业习题