|
|
发表于 2019-5-31 11:09:13
|
显示全部楼层
本帖最后由 都淡忘 于 2019-5-31 11:36 编辑
谢谢你的疑问。我也发现了一个非常错误的地方,要求是两边均有且只有3个大写字母,也就是说AAAAaAAAA这样是不行的,于是我又修改了下代码。如下
- x ="""AAAaQQAaA
- AAaA
- AAcCCaBBBBsDDD"""
- list1 = []# 直接定位小写字母,用列表存起来他们的索引
- for each in enumerate(x):
- if each[1].islower() and 2 < each[0] < len(x) - 3:
- list1.append(each[0])
- list2 = []
- if list1[0] == 3:# 直接对第4位密码检验,其后面第四位不能是大写字母
- f = 0;j = 1 if not x[7].isupper() else 0
- if j == 0:
- list1.pop(0)
- else:
- for k in range(-3,4):
- if x[3 + k].isupper():
- f += 1
- if f == 6:
- list2.append(x[3]);list1.pop(0)
- if list1[-1] == len(x) - 4:# 直接对倒数第4位密码检验,其前面第四位不能是大写字母
- f = 0;j = 1 if not x[list1[-1] - 4].isupper() else 0
- if j == 0:
- list1.pop(-1)
- else:
- for k in range(-3,4):
- if x[len(x) - 4 + k].isupper():
- f += 1
- if f == 6:
- list2.append(x[len(x) - 4]);list1.pop(-1)
- for i in list1:#以list1中元素为索引进行检验
- f = 0
- for k in range(-3,4):
- if x[i + k].isupper():
- f += 1
- g = 1 if not x[i - 4].isupper() else 0;j = 1 if not x[i + 4].isupper() else 0
- if f == 6 and g * j == 1:
- list2.append(x[i])
- result = "".join(list2)
- print(result)
复制代码 |
|