🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 第三关: 第三题地址:[http://www.pythonchallenge.com/pc/def/equality.html](http://www.pythonchallenge.com/pc/def/equality.html)<br> ![](https://img.kancloud.cn/ec/eb/eceb3a9548ac8f8da5f090f0f63aec7a_685x516.png)<br> 下面的提示,翻译过来就是:**一个小字母,两边正好有三个大保镖**我的理解是:一个小写字母左边有三个大写字母,右边有三个大写字母 参考上一题,还是找网页源代码 ![](https://img.kancloud.cn/f4/ff/f4ffd000e5eb99bb713dd81eb1c2624b_1303x577.png) # **解题代码:** ``` # 目标:一个小写字母旁边有是三个大写字母 # 定为小写字母:ascii值97-122 # 定位大写字符:ascii值65-90 # 大概思路,for循环遍历每一个小写字母,在判断其左三个字符,右三个字符(正好左三个,右三个,没有第四个) str_text = "源代码里面的字符太长了,这里不粘贴了,你们自己复制吧!" new_str_text = "" # 一个空的字符,代表所有小写字符的集合 list_new_str_text = list(new_str_text) # 转换为列表 end_text = "" # 一个空字符,代表最终所有满足条件的小写字符 list_end_text = list(end_text) # 转换为列表 print(len(str_text)) # 十万个字符,这人真狠! for i in range(len(str_text)): # 字符串第一个是零,此时的i就是字符串的下标位置 # print(i) # 从第四个(下标3)(含)开始,判断到倒数四个(下标len()-1-3)(含) # 判断其左三个字符都是大写字符,且右边三个字符都是大写字符 if 97 <= ord(str_text[i]) <= 122: # 筛选出来小写字符 # print(i) # 所有小写字符的位置全部输出,这个创建一个列表,直接判断这个列表 list_new_str_text.append(i) # 新的列表,包含所有小写字符的位置(下标) print(list_new_str_text) # 新的列表,包含所有小写字符的位置(下标) for a in list_new_str_text: # a:每个小写字符在原字符串中的位置 # print(a) if 3 <= a <= (len(str_text) - 4): # 筛选掉两边的六个(无法处理,也不会是两边的六个) # print(a) # 下面开始判断 a左三个,右三个都是大写字符 if 65 <= ord(str_text[a - 3]) <= 90: # print(str_text[a] + '左边第三个是大写字符') if 65 <= ord(str_text[a - 2]) <= 90: # print(str_text[a] + '左边第二个是大写字符,且左边第三个是大写字符') if 65 <= ord(str_text[a - 1]) <= 90: print(str_text[a] + '左边第一个是大写字符,且左边第二个是大写字符,且左边第一个是大写字符') # TODO 最后在判断一下,左边第四个不是大写字符 if (97 <= ord(str_text[a - 4]) <= 122): print(str_text[a] + '左边第一个是大写字符,且左边第二个是大写字符,且左边第一个是大写字符,且左边第四个是小写字符') if 65 <= ord(str_text[a + 3]) <= 90: # print(str_text[a] + '右边第三个是大写字符') if 65 <= ord(str_text[a + 2]) <= 90: # print(str_text[a] + '右边第二个是大写字符,且右边第三个是大写字符') if 65 <= ord(str_text[a + 1]) <= 90: # print(str_text[a] + '右边第一个是大写字符,且右边第二个是大写字符,且右边第三个是大写字符') if (97 <= ord(str_text[a + 4]) <= 122): print(str_text[a] + '右边第一个是大写字符,且右边第二个是大写字符,且右边第一个是大写字符,且右边第四个是小写字符') list_end_text.append(str_text[a]) print(list_end_text) print("".join(list_end_text)) # linkedlist ``` 代码还有很大的改动空间,想那个那么多层的if循环可以简化一些,我这里懒得改了,能过关就行了!