gamelife521 发表于 2019-12-16 02:06:14

零基础python第一版本,20讲函数:内嵌函数和闭包 | 课后测试题

零基础python第一版本,20讲函数:内嵌函数和闭包 | 课后测试题
链接:https://fishc.com.cn/forum.php?mod=viewthread&tid=42685&extra=page%3D1%26filter%3Dtypeid%26typeid%3D398
这里的最后一题,
str1 = '''ABSaDKSbRIHcRHGcdDIF'''
找出小甲鱼藏在下边这个长字符串中的密码,密码的埋藏点符合以下规律:
1.每位密码为单个小写字母
1.每位密码的左右两边均有且只有三个大写字母
答案代码看了两个多小时无法理解,小甲鱼的设计思路用for循环对字符串中每个字符依次找出条件1(countB赋值),然后对找到的字符验证前后(countA和countB复制)使其符合统计条件2
三个countA B C的变量定义和引用还可以勉强跟上思路,初学者到代码后半段的变量清除条件就很难理解了
---------------------------------------------------------------
初学者我的思路是在不考虑字符串换行和空格情况下找出条件1的元素,再索引前后判断条件2
对比答案代码总感觉好像不够严谨,总感觉哪里差点意思。好像我这样写会更占内存,还想问一下在实际运行中哪个代码运行的效率高一点

str1='ABSaDKSbRIHcRHGcdDIF'
lenth = len(str1)
for i in range(0+3,lenth-3):   #密码左右两边都有3个大写字符那么密码肯定是不在字符前三个和后三个
   if str1.islower(): #判断密码字符前三个和后三个是否均为大写
          if str1.isupper() and str1.isupper() and\
             str1.isupper() and str1.isupper() and\
             str1.isupper() and str1.isupper():
               print(str1,end='')
   

gywjj 发表于 2019-12-17 12:42:28

你那样写的话,也应该是如下代码:
str1='ABSaDKSbRIHcRHGcdDIF'
lenth = len(str1)
for i in range(0+3,lenth-3):   #密码左右两边都有3个大写字符那么密码肯定是不在字符前三个和后三个
    if str1.islower(): #判断密码字符前三个和后三个是否均为大写
      if str1.isupper() and str1.isupper() and\
             str1.isupper() and str1.isupper() and\
             str1.isupper() and str1.isupper():
            print(str1)

2658845500 发表于 2020-1-14 20:33:27

gywjj 发表于 2019-12-17 12:42
你那样写的话,也应该是如下代码:
str1='ABSaDKSbRIHcRHGcdDIF'
lenth = len(str1)


str   啥意思啊看半天没看懂

gywjj 发表于 2020-1-14 22:13:51

2658845500 发表于 2020-1-14 20:33
str   啥意思啊看半天没看懂

你运行一下就知道了,i是符合条件小写的位置,这个的意思就 是把i这个小写字母和前三个大写字母和后三个大写字母打印出来
页: [1]
查看完整版本: 零基础python第一版本,20讲函数:内嵌函数和闭包 | 课后测试题