| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
i=0 
list1=[] 
 
str1='''ACFlCTLIQlAIVMTqHFkswqbDDHtpgcWaXSSglUYKE 
lqNsYCyaQXBzrFUbkAUAWAKrDgDtAlGMBqWQhpEwquZqWZJpslUfMllCwWptqINjrOBTLuPzwvXNbLCx 
oFRritKRpJgBOaGPZdkUzvYnvYmAlEsVmKRXqyQUOdCBqLYyboOYeAQNLnkuiDXCiNiksSSRpDMVQQgs 
TmYThnppfKSmkpjjceGLaMOvYgsvNkGENKgGtUSzVPlLMeephDKrWGNpAxBqRiCnQIuKwDZurIRsznUp 
xhstMWpHdZzqeEnttlAHiWbhbIJpwKBAGsFWthBiwBDKTFzIUamELZJFLbmqOmwBIYBJIofAUyxTLUEm 
LcOXzjIHFcfUfEWccbWzhVuIZMdTVsOaNsLTpHjrvFaYTnJUrqaYnUmbobfOXXtkjKjFUEhVNlPWeaIY 
uABNuEDKFWiUaqQiBHGsgEmDSKiJKLkkzFWlobXIyUlDzGcwDnEOwwWxgFpebsslmKItazIYctPROSJp 
ImDHusQIkoFQSmuqwdcPNERvflfHtkGTrtbQXqZUsazoxmbVTPIuuxKvfALAaGnIuIZwczCcoIRMncBs 
timFGHPJPaHMPTLjsBjIwbbzKyghaDTUStzJceaYAneywwpvdiUJifPHtXmAwZPChWsDmwonzeeQCEiB 
xWsJLAtrdVEOBxEaYiSabHdUwlXlDOAKzZUwozJoBGvnFttDkXdYdjQSzzhTIPfYpWVFdiFIqSbyPZIi 
VoXunBPbAJVMWluPcIfHmjPeHaTyClCvTOucEYEZXbVDiZMsfeuruDGMmQEsHutzvzVmWvCoPRguBiHh 
taTeaguPmNuAxzYJLEcdoApfIFBaLUqettjTJNlHZYlJZRRoKXEvFnoUHdPjDuXuTAubGODkHAokpItw 
SlEwhjrUSlfMawWlTMciWAzVcgPcqCHIaogokYAWGsvWZzBfJqzxIkCNvHDvBkOMCyeYXzVVuRJLQIOy 
BMoVPgFLOagDxyPfWxTtZQNCLOrVVclPzMNYruNUyMOBKxBvinxuGMAAfndhPsROtkOJAAJQSxpmTzXm 
CmEwZOhlItvETUneqvdKLghLyREjuJWRFjVVuNMiPuvvmRaEUmjCXDVuMRAvBuHUYGKPXthWISIbueRp 
uvxpmqclmrXpAGFrxhJGxQwlrbkHEmcEUooCoPqGzbrCfIWmtUKmzzXvcqbhxKcAwXCNjbJDWDndKiLK 
HwaFKyhXJQgHjIaTfIJrkhUpTHJZebRertDigQtDKxGerMRgHWFTrqqZlcBjAUfTZdFlZCAEZnhzgTIy 
'''   #删了一部分,不然占用太多空间 
for t in str1: 
    i = i+1 
    list2=[i-3,i-2,i-1,i+1,i+2,i+3] 
    if t.islower(): 
        for s in list2: 
            if str1[s].isupper(): 
                list1.append(t) 
 
 
请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:Y5d|MAp 
Y5d|MAp 
    a) 每位密码为单个小写字母Powered by bbs.fishc.com 
    b) 每位密码的左右两边均有且只有三个大写字母qH{]*ZR 
                 
         
         
         
         
         
         
     
 本帖最后由 白two 于 2021-8-21 23:09 编辑 
你这有大问题啊
 
首先两边有且只有 3 个大写字母,所以得判断第前后 4 位为小写(得分两种例外情况,开始和结束的时候,只需要判断前 4 位和后 3 位  或者 前 3 位和后 4 位) 
其次下表越界问题,你的 i 从 0 开始,所以得判断 list2 的 首位是否小于 0 或者 最后一位是否大于字符长度
最后你的判定有问题,周围六位 for 循环的时候只要该元素是一个大写字母,就把 t 加进去,而并非周围六位全为大写才加入 
可以考虑如下:
 - a = 0
 
 - for s in list2:
 
 -     if str1[s].isupper():
 
 -         a += 1
 
 -         if a == 6:
 
 -             list1.append(t)
 
 
  复制代码 
总体更改如下:
 - str1='''ACFlCTLIQlAIVMTqHFkswqbDDHtpgcWaXSSglUYKE
 
 - lqNsYCyaQXBzrFUbkAUAWAKrDgDtAlGMBqWQhpEwquZqWZJpslUfMllCwWptqINjrOBTLuPzwvXNbLCx
 
 - oFRritKRpJgBOaGPZdkUzvYnvYmAlEsVmKRXqyQUOdCBqLYyboOYeAQNLnkuiDXCiNiksSSRpDMVQQgs
 
 - TmYThnppfKSmkpjjceGLaMOvYgsvNkGENKgGtUSzVPlLMeephDKrWGNpAxBqRiCnQIuKwDZurIRsznUp
 
 - xhstMWpHdZzqeEnttlAHiWbhbIJpwKBAGsFWthBiwBDKTFzIUamELZJFLbmqOmwBIYBJIofAUyxTLUEm
 
 - LcOXzjIHFcfUfEWccbWzhVuIZMdTVsOaNsLTpHjrvFaYTnJUrqaYnUmbobfOXXtkjKjFUEhVNlPWeaIY
 
 - uABNuEDKFWiUaqQiBHGsgEmDSKiJKLkkzFWlobXIyUlDzGcwDnEOwwWxgFpebsslmKItazIYctPROSJp
 
 - ImDHusQIkoFQSmuqwdcPNERvflfHtkGTrtbQXqZUsazoxmbVTPIuuxKvfALAaGnIuIZwczCcoIRMncBs
 
 - timFGHPJPaHMPTLjsBjIwbbzKyghaDTUStzJceaYAneywwpvdiUJifPHtXmAwZPChWsDmwonzeeQCEiB
 
 - xWsJLAtrdVEOBxEaYiSabHdUwlXlDOAKzZUwozJoBGvnFttDkXdYdjQSzzhTIPfYpWVFdiFIqSbyPZIi
 
 - VoXunBPbAJVMWluPcIfHmjPeHaTyClCvTOucEYEZXbVDiZMsfeuruDGMmQEsHutzvzVmWvCoPRguBiHh
 
 - taTeaguPmNuAxzYJLEcdoApfIFBaLUqettjTJNlHZYlJZRRoKXEvFnoUHdPjDuXuTAubGODkHAokpItw
 
 - SlEwhjrUSlfMawWlTMciWAzVcgPcqCHIaogokYAWGsvWZzBfJqzxIkCNvHDvBkOMCyeYXzVVuRJLQIOy
 
 - BMoVPgFLOagDxyPfWxTtZQNCLOrVVclPzMNYruNUyMOBKxBvinxuGMAAfndhPsROtkOJAAJQSxpmTzXm
 
 - CmEwZOhlItvETUneqvdKLghLyREjuJWRFjVVuNMiPuvvmRaEUmjCXDVuMRAvBuHUYGKPXthWISIbueRp
 
 - uvxpmqclmrXpAGFrxhJGxQwlrbkHEmcEUooCoPqGzbrCfIWmtUKmzzXvcqbhxKcAwXCNjbJDWDndKiLK
 
 - HwaFKyhXJQgHjIaTfIJrkhUpTHJZebRertDigQtDKxGerMRgHWFTrqqZlcBjAUfTZdFlZCAEZnhzgTIy
 
 - '''   #删了一部分,不然占用太多空间
 
 - # str1 = '''ABSaDKSbRIHcRHGcdDIF'''
 
 - i=0
 
 - list1=[]
 
 - l = len(str1)
 
 - for t in str1:
 
 -     list2=[i-4,i-3,i-2,i-1,i+1,i+2,i+3,i+4]
 
 -     if t.islower():
 
 -         if list2[0] >= 0 and list2[-1]<l:
 
 -             if str1[list2[0]].islower() and str1[list2[-1]].islower():
 
 -                 a = 0
 
 -                 for s in range(1,7):
 
 -                     if str1[list2[s]].isupper():
 
 -                         a += 1
 
 -                         if a == 6:
 
 -                             list1.append(t)
 
 -         elif list2[0] == -1:
 
 -             if str1[list2[-1]].islower():
 
 -                 a = 0
 
 -                 for s in range(1,7):
 
 -                     if str1[list2[s]].isupper():
 
 -                         a += 1
 
 -                         if a == 6:
 
 -                             list1.append(t)
 
 -         elif list2[-1] == l:
 
 -             if str1[list2[0]].islower():
 
 -                 a = 0
 
 -                 for s in range(1,7):
 
 -                     if str1[list2[s]].isupper():
 
 -                         a += 1
 
 -                         if a == 6:
 
 -                             list1.append(t)
 
 -     i += 1
 
 - print(list1)
 
  复制代码 
 
 
 |   
 
 
 
 |