本帖最后由 白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)
|