|
|
发表于 2016-12-15 08:58:56
|
显示全部楼层
看了两天,弄明白后自己写的注释 希望对你们有帮助
- #寻找藏在长字符串中的密码
- #每位密码为单个小写字母
- #每位密码的左右两边都有且只有三个大写字母
- str='''
- 这里是长字符串
- '''
- length = len(str) #要借助索引进行循环,并通过索引确定位置字母是大写,还是小写
- countA = 0 #记录左边大写字母
- countB = 0 #记录小写字母
- countC = 0 #记录右边大写字母
- for i in range(length):
- if str[i] == '\n': #如果是换行,则继续执行
- continue
- # 如果字母是大写的,则需要判断该大写应该计入左边,还是应该计入右边
- if str[i].isupper():
- if countB: #如果已经找到了一个小写字母,大写字母应该计入右边
- countC += 1
- else: #如果还没有找到小写字母 ,则大写字母应该计入左边
- countA += 1
- countC = 0
- if str[i].islower():#如果当前字母是小写,则需要判断左边是否是三个大写字母,不是,则全都归零,从新找
- if countA != 3:
- countA = 0
- countB = 0
- countC = 0
- else:
- if countB: #如果已经存在一个小写字母了 初始化,重新找
- countA = 0
- countB = 0
- countC = 0
- else: #如果还没有出现,则统计
- countB = 1 #如果左边是三个大写字母,则countB目前有效,计算右边的大写字母数,使用上面的if语句
- countC = 0 #目前还不不知道右边的字母 需要使用上面的if语句进行获取,这里初始countC的值
- target = i #给i做个记录 ,如果符合需求 会拿来取索引对应的小写字母
- if countA ==3 and countC == 3: #如果countA 和countC 都等于3了 ,需要判断右边有没有第四个大写
- #i不能是最后一个字母的时候,右边第四个字母是大写,不符合条件
- if i+1 != length and str[i + 1].isupper():
- #这里为什么不初始countA呢,上一个if语句如果countA不等于3 会自动重置
- countB = 0 #第四个是大写,不符合条件 从新循环
- countC = 0
- else:
- print(str[target],end= ' ')#如果右边第四个不是大写,打印标记的索引对应的小写字母
- countA = 3 #将countC的值继续使用
- countB = 0 #初始化 开始寻找下一个字母
- countC = 0
复制代码 |
|