第020讲:函数:内嵌函数和闭包 动动手1求助
本帖最后由 WilsonWolf2333 于 2020-12-8 16:49 编辑题目:
1. 请用已学过的知识编写程序,找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
a) 每位密码为单个小写字母
b) 每位密码的左右两边均有且只有三个大写字母
我的疑问是:
1.完全无法理解答案的思路,怎么想出来的,尝试理顺答案思路时就抓狂{:5_100:} 。我尝试给答案加了注释,但还是无法理解答案的思路
2.请大神看看我这个想法对不: 这道题的思路就类似于 - 想象成有这么一个小机器,一个一个检测长字符串中的字母,每到一个字母,
就根据它的内部程序判断此字母是否符合题目要求,符合的就打印出来
上述1.展开如下
1.我对代码加的注释
str1 = '''ABCdEfGHIjKLMnOPQrSTU'''
countA = 0# 统计前边的大写字母
countB = 0# 统计小写字母
countC = 0# 统计后边的大写字母
length = len(str1)
for i in range(length):
if str1 == '\n':
continue
# 当轮到某个大写字母时,分两种情况,
# 1.到此已经有了小写字母,
# 那么统计后面大写字母的计数器C+1;
# 2.如果到此时还没出现小写字母,
# 那么统计前面大写字母的计数器A+1
if str1.isupper():
if countB:
countC += 1
else:
countC = 0
countA += 1
# 当轮到某个小写字母时,分两种情况,
# 1.如果前面的大写字母数量不为3
# 那么ABC归零
# 2.如果此时前面有三个大写字母,这里又分为三种情况
# a.如果此时存在小写字母
# 那么ABC归零
# b.如果此时没有小写字母
# 那么小写字母数量统计记为1
# 后面大写字母数量统计记为0
# 记录此时i值
if str1.islower():
if countA != 3:
countA = 0
countB = 0
countC = 0
else:
if countB:
countA = 0
countB = 0
countC = 0
else:
countB = 1
countC = 0
target = i
# 如果AC同时为3,分为两种情况,
# 1.如果此时不是统计的最后一位,并且 下一位字母为大写
# 那么BC归零
# 2.如果统计的是最后一位 或者 下一位字母是小写
# 那么符合条件打印出密码
# 同时前面大写字母计数为3,B归零
if countA == 3 and countC == 3:
if i+1 != length and str1.isupper():
countB = 0
countC = 0
else:
print(str1, end='')
countA = 3
countB = 0
countC = 0
另外,3.(吐槽,唠叨)
我尝试按照分别判断countA, countB, countC的顺序来理顺思路,写出的注释代码如下,但是然并卵,对我理解答案思路没有帮助,抓狂*2{:5_100:}
'''
A B C d E f G H I j K L M n O P Q r S T U
针对于A的代码有:
如果检测到了大写字母
如果此时没有小写字母
那么A值加一
如果检测到了小写字母
如果此时前面大写字母的数量不为三
那么A值归零
如果此时前面大写字母数量恰好为三
如果此时已经有小写字母
那么A值归零
如果前后大写字母数量此时都恰好为三
如果 此时是最后一位字母 或者 下一位是小写字母
那么符合条件
A值重新赋值为三
'''
'''
针对于B的代码有:
如果检测到了小写字母
如果此时前面大写字母数量不为三
那么B值归零
如果此时前面大写字母数量恰好为三
如果此时已经有了小写字母
那么B值归零
如果此时还没有小写字母
那么B值为1
如果恰好前后大写字母数量都为三
如果此时不是最后一位字母 同时 如果下一位是大写字母
那么B值归零
如果 此时是最后一位字母 或者 下一位是小写字母
此时符合条件
然后B值归零
'''
'''
针对于C的代码有:
如果检测到大写字母
如果此时已有小写字母
那么C值加一
如果此时没有小写字母
那么C值为零
如果检测到小写字母
如果已有的前面大写字母数量不为3
那么C值为零
如果此时前面大写字母恰好为3
如果此时也有小写字母了
那么C值为零
如果此时没有小写字母
那么C值为零
如果此时前后大写字母都有3个了
如果此时不是最后一位字母 同时 如果下一位是大写字母
那么C值归零
如果 此时是最后一位字母 或者 下一位是小写字母
那么符合条件
然后C值归零
'''
P.S. 这道题已经卡住我2周了,原打算按
‘a.自己解
b.分析答案
c.默敲代码
d.对比自己代码 &知识点复盘
’这个顺序来做这道题,结果发现b.分析答案这步骤完全过不了。。
尝试百度和论坛里搜索和这道题相关的文章,但是没有找到对我帮助太大的。
请路过的大神不吝赐教,就是想不明白。。。{:5_99:} 我看你这注释已经十分到位了啊{:10_245:} {:10_266:}加油啊 昨非 发表于 2020-12-8 16:52
我看你这注释已经十分到位了啊
感谢回复! 我昨天继续按原答案的注释捋了一下,发现比之前更能看懂一点点了。一直有个疑问,小甲鱼怎么想出来这个思路的%#@¥#……¥#@#¥,这要是换成我,会各种杂乱的if语句嵌套,而不是这样规整的写出来。。继续研究了{:5_105:} WilsonWolf2333 发表于 2020-12-9 08:10
感谢回复! 我昨天继续按原答案的注释捋了一下,发现比之前更能看懂一点点了。一直有个疑问,小甲鱼怎么 ...
理解不了可以缓一缓先,题目本意是助于理解,说不定什么时候想起来还有这个题再看时就豁然开朗了 我赞同的楼上的方式! 加油
注释清晰 冲冲
6666 学了 心驰神往 发表于 2020-12-9 08:09
加油啊
谢谢!{:5_105:} 昨非 发表于 2020-12-9 08:19
理解不了可以缓一缓先,题目本意是助于理解,说不定什么时候想起来还有这个题再看时就豁然开朗了
有道理! 我怎么没想到。。。实在想不出来我就跳过去看后面的课程了,谢谢啦!{:5_109:} 奋斗者4 发表于 2020-12-9 08:44
我赞同的楼上的方式!
对对,卡住太久耽误学习效率了{:5_105:} 1336069416 发表于 2020-12-9 10:43
加油
谢谢!{:5_109:} 感谢各位朋友的回复,我先关闭这个问题了啊,进军下一节课程~{:5_101:} 1336069416 发表于 2020-12-9 10:46
学了
你这 加油 守望星星 发表于 2020-12-10 08:35
加油
谢谢!{:5_109:} 本帖最后由 WilsonWolf2333 于 2020-12-11 12:58 编辑
心驰神往 发表于 2020-12-10 08:03
你这
{:5_109:}{:5_109:}
页:
[1]
2