本帖最后由 txxcat 于 2020-3-13 15:22 编辑
你的代码的问题是"a = str1.find(each)"这行,你要获取小写字母的位置,可是一个小写字母会重复出现若干次,而a只是第一个小写字母的位置,所以不可能出答案,其实获得字母的位置很简单,利用计数器,每次迭代加1,a就是真实的位置了。
- str1 = ('''xhstMWpHdZzqeEnttlAHiWbhbIJpwKBAGsFWthBiwBDKTFzIUamELZJFLbmqOmwBIYBJIofAUyxTLUEm
- LcOXzjIHFcfUfEWccbWzhVuIZMdTVsOaNsLTpHjrvFaYTnJUrqaYnUmbobfOXXtkjKjFUEhVNlPWeaIY
- uABNuEDKFWiUaqQiBHGsgEmDSKiJKLkkzFWlobXIyUlDzGcwDnEOwwWxgFpebsslmKItazIYctPROSJp''')
- list1 = []
- list2 = list(str1)
- a=0 #增加这行
- for each in list2:
- if each.islower():
- # a = str1.find(each) #删除这行
- if str1[(a-3):a].isupper():
- if str1[(a+1):(a+4)].isupper():
- if not str1[a-4].isupper():
- if not str1[a+4].isupper():
- print(a,each)
- list1.append(each)
- a+=1 #增加这行
- list3 = str(list1)
- print(list3)
复制代码
加了2行,删除1行就可以运行了,但是答案多了一个字母,是受到了'\n'的干扰,你把isupper的检查换成依次检查每个字母而不是检查3个字母的字符串就可以排除这个干扰了。