不好意思哈,前两天没看到,我的上一个回答确实有点问题,没考虑到密码是左右有且只有三个大写字母
没判断第四个是否是字母
自行添加一下 longstr,longstr 太长,没给过审
longstr = ''''''
length2 = len(longstr)
password = ''
# 此处源代码少了一个 range, 没有 range 表明在 3 和 length - 2 这两个数里面运行 for,而非组合两个数的范围之间运行
for each in range(4, length2 - 4):
# 为了简略,可以直接写 if longstr[each].islower():
# 不需要if longstr[each].islower() == True:
# 因为只有当返回值不为 0 才会通过 if 语句,返回值为 0 则不通过
# True 在 python 中可以认为是 1, False 可以认为是 0
# 如果需要的是非小写字母通过 if 语句,则使用 if !longstr[each].islower():
# !True 表示的就是 0
if longstr[each].islower(): # 判断是否为小写字母
# 避免越界,即不超过右边界。如果超过右边界,则退出循环,即 each + 3 超过了 longstr 的长度,不需要继续检查了
if each + 4 < length2:
# 如果当前位置左边的三个均为大写字母则通过 if 循环
# 此处需要判断第四个是否为小写字母
# 如果第四个是小写字母,则满足密码的条件
# 因为密码左右两边有且只有三个大写字母
if longstr[each - 1].isupper() and longstr[each - 2].isupper() and longstr[each - 3].isupper() and (longstr[each - 4].isupper() == False):
# 如果当前位置右边的三个均为大写字母则通过 if 循环, 并且将当前字符插入到 password 中,即找到了需要的密码
if longstr[each + 1].isupper() and longstr[each + 2].isupper() and longstr[each + 3].isupper() and (longstr[each + 4].isupper() == False):
password += longstr[each]
else:
break
print(password)
|