|
发表于 2020-4-9 16:25:13
|
显示全部楼层
最佳答案似乎有个小问题:如果i-4<0,或者i+4=length无法检测。
比如说,如果str1='ABCdEFG',按照str1[i-4].islower()是检测不到的。
所以,更复杂点,还得分类讨论i的取值:
这是我写的:- length = len(str1)
- for each in range(3, length-3):
- flag = 0 #定义一个标量标志
- if str1[each] == '\n':
- continue
- elif str1[each].islower():
- if each == 3: #each==3,即前边只有三个字母
- if str1[each+4].isupper(): #判断后边第四个字母
- continue #如果第四个字母是大写,不符合题意,跳过后面进入下一轮循环
- else:
- for ea_ch in (str1[each-3:each] + str1[each+1:each+4]):
- if not ea_ch.isupper():
- flag = 1
- break #用break,因为不用再判断其余前后三个字母,跳出上一级for循环
- elif each == length-4: #即后面只有三个字母
- if str1[each-4].isupper(): #判断前面第四个字母
- continue
- else:
- for ea_ch in (str1[each-3:each] + str1[each+1:each+4]):
- if not ea_ch.isupper():
- flag = 1
- break
- else:
- if (str1[each-4].isupper()) or (str1[each+4].isupper()):
- continue
- else:
- for ea_ch in (str1[each-3:each] + str1[each+1:each+4]):
- if not ea_ch.isupper():
- flag = 1
- break
- if flag == 0: #最后判断flag值是否改变
- print(str1[each], end='')
复制代码 如果有问题欢迎指正!
|
|