本帖最后由 铁棍阿童木 于 2017-10-16 15:17 编辑
首先你要知道,在这段程序中是用逻辑推理的思路来定位密码的,共有三个推理模块:
一、从字符串中迭代出来的字符如果是大写字母则判断是位于密码的前面还是后面,并做标记 += 1;
二、如果是小写字母就看她前面有没有三个大写字母countA==3,如果有就要看是否已经出现小写字母(即countB是否非零)如果是就清空标记重新计数;
三、如果前面后面都是三个大写字母,但是后边第四个也是大写,重新标记;否则符合所有条件,打印结果。
所以一句话而言:
1、countA是用来标记密码前面有多少个大写字母;
2、countB是用来标记密码本身的;
3、countC是用来标记密码后面有多少个大写字母;
进入主题:
python中的if条件语句和while判断语句会把非零值认为是True,其他则是False
因此,在这段代码中如果str[i]是大写字母的话,就会进入第二个if语句
if countB: 等价于 if countB != 0:
在这里的意思是说,当检测到str是大写字母,同时countB不为零,那么就说明检测到的大写字母位于密码的后面,这个时候countC += 1(即小写字母后面有1个大写字母了,如果有3个就满足条件了)
然后就是else:
如果执行到这一步,就说明countB为零,那么就说明检测到的大写字母位于密码的前面,这个时候就是countA += 1了。
自己写代码的话,最好不要采用这种方式,保证程序代码的完整性非常重要,而且可读性比较强。[/i]