|
发表于 2014-8-10 19:57:47
|
显示全部楼层
- countA = 0
- countB = 0
- countC = 0
- length = len(str1) #获取字符串长度
- for i in range(length): #遍历字符串
- if str1[i] == '\n': #判断字符串是否是换行符,若是执行continue语句,忽略下面的判断,
- # 由于此if缩进内无任何操作,因此其含义就是遇到换行符忽略执行下一个字符的循环
- continue
- if str1[i].isupper(): #判断次索引值的字符是否为大写,若是,执行continue,忽略此if之外的其他代码,执行此代码块内的语句
- if countB == 1: #判断countB 是否为1,若是执行此代码块内的语句,若不是,执行countA += 1
- countC += 1 #其实if str1[i].isupper(): 这个判断的含义是判断是否有连续的三个大写字母,如果有,根据题意第四个必然是小写字母,如果超过三个就不符合题中的「有且只有三个大写字母」的要求了
- countA = 0
- else:
- countA += 1
- continue
- if str1[i].islower() and countA == 3: #如果符合连续三个是大写字母,第四个是小写字母,执行以下代码
- countB = 1 # countB为1 为下一个循环的上一个判断做准备
- countA = 0 # 初始化countA = 0 ,是为了下一次循环第一个if str1[i].isupper(): 是否接着是连续的三个大写字母,如果是,因为countB = 1 了,则开始累加 countC的值
- target = i #
- continue
- if str1[i].islower() and countC == 3: #这个就是判断密码右边的三个是否是连续的大写并且第四个是否为小写,如果是,则完全符合「每位密码的左右两边均有且只有三个大写字母」,则上一个判断的target = i的索引值即为目标密码
- print(str1[target], end='')
- countA = 0 #以下三个含义是初始化countA B C的值,为了大小写判断
- countB = 0
- countC = 0
复制代码
本题其实是有隐藏条件的,密码应该符合以下的条件:
|
|