|
发表于 2017-5-20 00:34:36
|
显示全部楼层
(1)首先从题目下手,分析题目要求:密码是小写,左右均有三个大写字母,那么最好的结果就是前三个都是大写,第四个是小写,即第一个密码出现最早的希望也得是在第四位,以此类推,规律就是待检查的字符串前三个是大写,第四个是小写
(2)关于“ if i+1 != length and str1[i+1].isupper(): ”这句话的理解,亲,可以倒着看,打印密码输出就一个,即print(str1[target], end=''),而满足这个输出的条件有子判断else和‘if countA == 3 and countC == 3:’,后者明显满足题目逻辑2,即前后三个都是大写字母,结合分析(1),else条件只能是第四个字符串是小写。而‘if i+1 != length and str1[i+1].isupper():’跟else逻辑对立,非if即else,所以if判断条件之一必然就是第四个子字符串是大写。
(3)依然根据(1)的逻辑,查找密码即执行for循环,而for 循环判断条件 i in range(length),表明i的取值是0到length-1,那么,循环终止的条件就是i+1=length,即i是字符串的最后一个字符,即后面没字符了,循环停止
(4)因为子if判断语句隶属与for循环条件中,那么,利用(3)这样就解释了“ if i+1 != length and str1[i+1].isupper(): ”中“i+1 !=length” 是保证i不是字符串的最后一个字符,当下一次循环时,可继续执行
|
|